简体   繁体   中英

Issue with add method in tensorflow : AttributeError: module 'tensorflow.python.framework.ops' has no attribute '_TensorLike'

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'))

-> i am getting error at this line. I am not really sure what am i missing here.

Traceback (most recent call last):

File "PycharmProjects/HW2/venv/bin/hw3q4.py", line 46, in model.add(Dense(hidden_neuron, input_dim=61, activation='relu')) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/sequential.py", line 165, in add layer(x) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/base_layer.py", line 414, in call self.assert_input_compatibility(inputs) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/engine/base_layer.py", line 279, in assert_input_compatibility K.is_keras_tensor(x) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 472, in is_keras_tensor if not is_tensor(x): File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 480, in is_tensor return isinstance(x, tf_ops._TensorLike) or tf_ops.is_dense_tensor_like(x) A ttributeError: module 'tensorflow.python.framework.ops' has no attribute '_TensorLike'

For me, the fix was importing

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

instead of

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

There seems to be some weird compatibility issues between keras and tensorflow.keras

It is due to version incompatibility.
Update keras to the latest version compatible with tensorflow :

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

You can use the following import command:

from tensorflow.keras.layers import ... 

instead of the ' old ' one:

from keras.layers import ....

As described here.

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

!pip uninstall tensorflow 
!pip install tensorflow==1.14

!pip uninstall keras 
!pip install keras==2.2.4

Installing the above versions of keras and tensorflow have solved the problem for me.

简单地同时更新 TensorFlow 和 Keras 可能会解决这个问题

It depends on how you are importing the preliminaries. If importing tensorflow as tf and importing keras within the tensorflow, you should start with tf.keras. otherwise, if you are importing directly keras.models then you can just start off with Input() or Conv().

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM