我正在尝试向顺序模型添加图层,以使用fashion_mnist数据对其进行训练。但是,我反复收到此错误。
#import statements
将tensorflow导入为tf
来自tensorflow导入keras
将matplotlib.pyplot导入为plt
从tensorflow.keras导入模型
#Creating a sequential model
model=models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activation=tf.nn.relu),tf.keras.layers.Dense(10,activation=tf.nn.softmax)])
#Compiling the model with optimizer and loss function
model.compile(optimizer='tf.train.AdamOptimizer',loss='sparse_categorical_crossentropy')
错误:
TypeError Traceback (most recent call last)
<ipython-input-4-ffa2750d675a> in <module>()
1 #creating a sequential model
----> 2 model=models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activation=tf.nn.relu),tf.keras.layers.Dense(10,activation=tf.nn.softmax)])
c:\users\admin\appdata\local\programs\python\python36\lib\site-packages\keras\models.py in __init__(self, layers, name)
439 if layers:
440 for layer in layers:
--> 441 self.add(layer)
442
443 def add(self, layer):
c:\users\admin\appdata\local\programs\python\python36\lib\site-packages\keras\models.py in add(self, layer)
458 raise TypeError('The added layer must be '
459 'an instance of class Layer. '
--> 460 'Found: ' + str(layer))
461 if not self.outputs:
462 # First layer in model: check that it is an input layer.
TypeError: The added layer must be an instance of class Layer. Found: <tensorflow.python.keras.layers.core.Flatten object at 0x00000254C648FE48>
有人可以帮我吗?
答案 0 :(得分:0)
请在顶部向我们显示导入声明。如果您使用
from keras import models
然后在将tf.keras图层添加到keras模型中时会出现此错误。
不幸的是,keras和tf.keras不兼容。
如果将导入更改为:
from tensorflow.keras import models
然后您的代码应该可以工作。
答案 1 :(得分:0)
我在代码中发现了类似的错误:
import tensorflow as tf
from keras import Sequential, Embedding
model = Sequential(name='embedding')
model.add(Embedding(2, 2, input_length=7))
model.compile('rmsprop', 'mse')
model.predict(np.array([[0, 1, 0, 1, 1, 0, 0]]))
然后我找到了有关tensorflow 2.0 and keras的文章。
在本文中,作者说:
现在TensorFlow 2.0已同时发布keras和tf.keras, 暗示keras和tf.keras仍然是单独的项目;然而, 开发人员应该开始使用tf.keras作为keras软件包 将仅支持错误修复。
然后我更改了代码,一切正常
import tensorflow as tf
import tensorflow.keras as k
from tensorflow.keras.layers import Embedding
import numpy as np
model: k.Sequential = k.Sequential(name='embedding')
em: Embedding = Embedding(2, 2, input_length=7)
model.add(em)
model.compile('rmsprop', 'mse')
model.predict(np.array([[0, 1, 0, 1, 1, 0, 0]]))
print("model.weights: ", model.weights)