当我偶然发现这个问题时,我正在古瑟拉尝试这门课程。每当我试图运行model.fit()时,它都会显示此错误。
显示的错误:
KeyError Traceback (most recent call last)
<ipython-input-83-0ef54ef3afb9> in <module>()
11 validation_steps = len(x_val) // batch_size,
12 epochs=12,
---> 13 callbacks=callbacks
14 )
3 frames
/usr/local/lib/python3.6/dist-packages/livelossplot/generic_keras.py in on_train_begin(self, logs)
29
30 def on_train_begin(self, logs={}):
---> 31 self.liveplot.set_metrics([metric for metric in self.params['metrics'] if not metric.startswith('val_')])
32
33 # slightly convolved due to model.complie(loss=...) stuff
KeyError: 'metrics'这里是我的实际代码:
from tensorflow.keras.layers import Dense, Input, Dropout,Flatten, Conv2D
from tensorflow.keras.layers import BatchNormalization, Activation, MaxPooling2D
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.optimizers import Adam, SGD
from tensorflow.keras.callbacks import ModelCheckpoint初始化CNN
model = Sequential()第一卷积
model.add(Conv2D(32,(5,5), padding='same', input_shape=(64, 128, 1)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))第二卷积层
model.add(Conv2D(64, (5,5), padding='same'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))压平
model.add(Flatten())全连通层
model.add(Dense(1024))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(4, activation='softmax'))学习速率调度与模型编译
initial_learning_rate=0.005
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate = initial_learning_rate,
decay_steps=5,
decay_rate=0.96,
staircase=True
)
optimizer = Adam(learning_rate=lr_schedule)
model.compile(loss='categorical_crossentropy', optimizer=optimizer , metrics=["accuracy"])
model.summary()训练模型
checkpoint = ModelCheckpoint('model_weight.h5', monitor='val_loss',
save_weights_only=True, mode='min', verbose=0)
callbacks=[PlotLossesCallback(), checkpoint]
batch_size=32
history = model.fit(
datagen_train.flow(x_train, y_train, batch_size=batch_size, shuffle=True),
steps_per_epoch = len(x_train) // batch_size,
validation_data = datagen_val.flow(x_val, y_val, batch_size=batch_size, shuffle=True),
validation_steps = len(x_val) // batch_size,
epochs=12,
callbacks=callbacks
)我怎么解决这个问题?
发布于 2020-10-23 21:09:26
尝试更改导入语句
from livelossplot.tf_keras import PlotLossesCallback至
from livelossplot.inputs.tf_keras import PlotLossesCallback发布于 2020-07-07 18:10:34
livelossplot.tf_keras将不能在Tensorflow版本2.1+中工作,将TensorFlow版本从2.2降级为使用pip install tensorflow==2.1的Tensorflow 2.1,它将工作并绘制模型培训图。
发布于 2020-08-28 02:43:58
您必须更新livelossplot以使用tensorflow 2.x版本。在工作的最新API中有一些重大变化。不要使用tf_keras,而是使用PlotLossesKeras。
from livelossplot import PlotLossesKeras
model.fit(X_train, Y_train,
epochs=10,
validation_data=(X_test, Y_test),
callbacks=[PlotLossesKeras()],
verbose=0)https://stackoverflow.com/questions/62162343
复制相似问题