AttributeError: module...ops‘ has no attribute ‘_TensorLike‘, ValueError: `updates` argument..eager

目的

keras和tensorflow结合使用很方便,然而坑点好多,好坑爹;
*问题是:
AttributeError: module ‘tensorflow.python.framework.ops’ has no attribute ‘_TensorLike’
原因在于keras导入的和tensorflow.keras导入的主次不同,结构有差异;

修改

*修改前
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import RMSprop

  • 修改后
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense, Dropout, Activation
    from tensorflow.keras.optimizers import RMSprop

中间经历波折

一开始搜索的以前 python3.6 + keras那些是用:
tensorflow_backend.py 的 line703
def is_tensor(x):
return isinstance(x, tf_ops._TensorLike) or tf_ops.is_dense_tensor_like(x)
返回类型修改为:
return isinstance(x, core_tf_types.Tensor) or tf_ops.is_dense_tensor_like(x)
* 结果改了一个bug引入另一个:
* ValueError: updates argument is not supported during eager execution. 并且这个bug只有升级版本,然而我的已经是最新版本;纠结好久,一脸蒙圈。
* 最后恢复修改,重回搜索最开始错误的解法。找到上述一个。

总结

问题修改多尝试几个,如果一个问题的修改引入另一个,那么要么接着改问题;要么就返回原点,重新找答案。即,如果改了一个问题引入另一个,那么也许一开始的解法就是错误的。

你可能感兴趣的:(2020,随感,解Bug)