我尝试使用这个模型来训练石头、剪刀、布的图片。然而,它在1800张图片上训练后,准确率只有30-40%。然后我尝试使用TensorBoard来查看发生了什么,但出现了标题中的错误。
from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flattenfrom keras.layers import Conv2D, MaxPooling2Dfrom tensorflow.python.keras.callbacks import TensorBoardmodel = 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 fitvalidation_freq=validation_freq)File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- packages\keras\engine\training_arrays.py", line 125, in fit_loopcallbacks.set_model(callback_model) File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- packages\keras\callbacks.py", line 68, in set_modelcallback.set_model(model)File "C:\Users\bamla\AppData\Local\Programs\Python\Python37\lib\site- packages\tensorflow\python\keras\callbacks.py", line 1509, in set_modelif not model.run_eagerly:AttributeError: 'Sequential' object has no attribute 'run_eagerly'
另外,如果您有任何提高准确率的建议,将不胜感激!
回答:
问题出在这里:
from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flattenfrom keras.layers import Conv2D, MaxPooling2Dfrom tensorflow.python.keras.callbacks import TensorBoard
不要混合使用keras
和tf.keras
的导入,这些是不兼容的,会产生您所看到的奇怪错误。