AttributeError: 'Sequential'对象没有属性'run_eagerly'。

3

我想使用这个模型来训练石头、剪刀、布的图片,但它只用1800张图片进行过训练,准确率只有30-40%。接着我尝试使用TensorBoard来查看情况,但标题中出现了错误。

from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from tensorflow.python.keras.callbacks import TensorBoard

model = Sequential()
model.add(Conv2D(256, kernel_size=(4, 4),
            activation='relu',
            input_shape=(64,64,3)))
model.add(Conv2D(196, (4, 4), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(196, (4, 4), activation='relu'))
model.add(Conv2D(196, (4, 4), activation='relu'))
model.add(Dropout(0.25))

model.add(Conv2D(128, (4, 4), activation='relu'))
model.add(Conv2D(128, (4, 4), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(96, (4, 4), activation='relu'))
model.add(Conv2D(96, (4, 4), activation='relu'))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(3, activation='softmax'))

''' here it instantiates the tensorboard '''
tensorboard = TensorBoard(log_dir="C:/Users/bamla/Desktop/RPS project/Logs")

model.compile(loss="sparse_categorical_crossentropy",
        optimizer="SGD",
        metrics=['accuracy'])

model.summary()

''' Here its fitting the model '''
model.fit(x_train, y_train, batch_size=50, epochs = 3, callbacks= 
[tensorboard])

这将输出:

Traceback (most recent call last):

File "c:/Users/bamla/Desktop/RPS project/Testing.py", line 82, in <module>
model.fit(x_train, y_train, batch_size=50, epochs = 3, callbacks= 
[tensorboard])

File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- 
packages\keras\engine\training.py", line 1178, in fit
validation_freq=validation_freq)

File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- 
 packages\keras\engine\training_arrays.py", line 125, in fit_loop
callbacks.set_model(callback_model)

 File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- 
packages\keras\callbacks.py", line 68, in set_model
callback.set_model(model)

File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- 
packages\tensorflow\python\keras\callbacks.py", line 1509, in set_model
if not model.run_eagerly:

AttributeError: 'Sequential' object has no attribute 'run_eagerly'

此外,如果您有任何关于如何提高准确性的技巧,我们将不胜感激!


可能是重复的问题 https://dev59.com/zrXna4cB1Zd3GeqPJFat ? - user3486184
4个回答

12

问题出在这里:

from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from tensorflow.python.keras.callbacks import TensorBoard

不要混用kerastf.keras的导入,它们不兼容,并会产生一些奇怪的错误,就像你正在看到的那些错误一样。


在这种情况下,我应该使用Keras还是tf.keras? - B T
@BT 这取决于你。 - Dr. Snoopy
使用 from keras.callbacks import TensorBoard 从 https://keras.io/callbacks/。 - LYu

2

我将 from tensorflow.python.keras.callbacks import TensorBoard 改为 from keras.callbacks import TensorBoard 后,它对我起作用了。


0

看起来你在混合使用 kerastensorflow.keras 的导入(后者更受推荐)。

https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0/

最重要的是,未来所有深度学习从业者都应该将他们的代码转换到TensorFlow 2.0和tf.keras包。原始的keras包仍将接收错误修复,但是在未来,您应该使用tf.keras。
import tensorflow
Conv2D = tensorflow.keras.layers.Conv2D
MaxPooling2D = tensorflow.keras.layers.MaxPooling2D
Dense = tensorflow.keras.layers.Dense
Flatten = tensorflow.keras.layers.Flatten
Dropout = tensorflow.keras.layers.Dropout
TensorBoard = tensorflow.keras.callbacks.TensorBoard
model = tensorflow.keras.Sequential()

0

对我来说,这个做了它的工作:

from tensorflow.keras import datasets, layers, models
from tensorflow import keras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接