AttributeError:“顺序”对象没有属性“ run_eagerly”

时间:2019-08-29 22:44:15

标签: tensorflow machine-learning keras python-3.7 tensorboard

我正在尝试使用此模型在岩石,纸张,剪刀图片上进行训练。但是,它是在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'

此外,如果您有任何提高精度的提示,将不胜感激!

4 个答案:

答案 0 :(得分:2)

问题在这里:

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导入,它们彼此不兼容,并会产生您看到的奇怪错误。

答案 1 :(得分:1)

我更改了from tensorflow.python.keras.callbacks import TensorBoardfrom keras.callbacks import TensorBoard,它对我有用。

答案 2 :(得分:0)

对我来说,这可以完成工作:

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

答案 3 :(得分: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()