张量流中添加方法的问题:AttributeError:模块'tensorflow.python.framework.ops'没有属性'_TensorLike'

Posted

技术标签:

【中文标题】张量流中添加方法的问题:AttributeError:模块\'tensorflow.python.framework.ops\'没有属性\'_TensorLike\'【英文标题】:Issue with add method in tensorflow : AttributeError: module 'tensorflow.python.framework.ops' has no attribute '_TensorLike'张量流中添加方法的问题:AttributeError:模块'tensorflow.python.framework.ops'没有属性'_TensorLike' 【发布时间】:2019-04-07 16:39:07 【问题描述】:
import keras as K
from keras.models import Sequential
from keras.layers import Dense
from tensorflow import set_random_seed

for hidden_neuron in hidden_neurons:
  model = Sequential()

model.add(Dense(hidden_neuron, input_dim=61, activation='relu'))

-> 我在这一行遇到错误。我不确定我在这里缺少什么。

Traceback(最近一次调用最后一次):

文件“PycharmProjects/HW2/venv/bin/hw3q4.py”,第 46 行,在 model.add(Dense(hidden_​​neuron, input_dim=61, activation='relu')) 文件 "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/sequential.py", 第 165 行,添加 层(x)文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/base_layer.py”, 第 414 行,在 调用 self.assert_input_compatibility(输入)文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/base_layer.py”, 第 279 行,在 assert_input_compatibility K.is_keras_tensor(x) 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py”, 第 472 行,在 is_keras_tensor 中 如果不是 is_tensor(x):文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py”, 第 480 行,在 is_tensor 中 返回 isinstance(x, tf_ops._TensorLike) 或 tf_ops.is_dense_tensor_like(x) AttributeError: 模块 'tensorflow.python.framework.ops' 没有属性 '_TensorLike'

【问题讨论】:

【参考方案1】:

对于那些偶然发现此问题的人,重新安装 Keras 和 Tensorflow 可以解决此问题。

【讨论】:

实际上,这并不完全正确。这取决于 keras 和 tensorflow 版本的组合,因为 keras 已集成到 tf 中,为 tensorflow.keras。不过,您可以通过更新获得幸运。【参考方案2】:

对我来说,修复是导入

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Conv2D, Flatten, Dense

而不是

from keras import Sequential
from keras.layers import Conv2D, Flatten, Dense

keras 和 tensorflow.keras 之间似乎存在一些奇怪的兼容性问题

【讨论】:

为什么不同步 tf 和 keras 并从 keras 正确导入?【参考方案3】:

您可以使用以下导入命令:

from tensorflow.keras.layers import ... 

而不是''一个:

from keras.layers import ....

如here.所述

【讨论】:

太棒了!你让我开心!【参考方案4】:

只需更新 TensorFlow 和 Keras 即可解决问题

【讨论】:

【参考方案5】:

这取决于您如何导入预备文件。 如果将 tensorflow 导入为 tf 并在 tensorflow 中导入 keras,则应从 tf.keras 开始。否则,如果您直接导入 keras.models,那么您可以从 Input() 或 Conv() 开始。

【讨论】:

【参考方案6】:

这是由于版本不兼容。 将 keras 更新到与 tensorflow 兼容的最新版本:

pip install --upgrade keras==x.x.x

【讨论】:

【参考方案7】:
!pip uninstall tensorflow 
!pip install tensorflow==1.14

!pip uninstall keras 
!pip install keras==2.2.4

安装上面版本的keras和tensorflow已经为我解决了这个问题。

【讨论】:

以上是关于张量流中添加方法的问题:AttributeError:模块'tensorflow.python.framework.ops'没有属性'_TensorLike'的主要内容,如果未能解决你的问题,请参考以下文章

在张量流中改变张量的尺度

由张量流中的索引张量指定的切片二维张量

张量流中的条件图和访问张量大小的for循环

张量流中的内存问题

在张量流中,如何迭代存储在张量中的输入序列?

张量流中使用的钩子是啥意思