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

飛凡可期發表於2020-10-10

目的

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只有升級版本,然而我的已經是最新版本;糾結好久,一臉蒙圈。
* 最後恢復修改,重回搜尋最開始錯誤的解法。找到上述一個。

總結

問題修改多嘗試幾個,如果一個問題的修改引入另一個,那麼要麼接著改問題;要麼就返回原點,重新找答案。即,如果改了一個問題引入另一個,那麼也許一開始的解法就是錯誤的。

相關文章