我正在读Chollet的书Deep Learning with Python的第3.7节。该项目是要找出20世纪70年代波士顿郊区房屋的中间价格。
https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/3.7-predicting-house-prices.ipynb
在“使用K折验证验证我们的方法”一节中,我尝试运行以下代码块:
num_epochs = 500
all_mae_histories = []
for i in range(k):
print('processing fold #', i)
# Prepare the validation data: data from partition # k
val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]
val_targets = train_targets[i * num_val_samples: (i + 1) * num_val_samples]
# Prepare the training data: data from all other partitions
partial_train_data = np.concatenate(
[train_data[:i * num_val_samples],
train_data[(i + 1) * num_val_samples:]],
axis=0)
partial_train_targets = np.concatenate(
[train_targets[:i * num_val_samples],
train_targets[(i + 1) * num_val_samples:]],
axis=0)
# Build the Keras model (already compiled)
model = build_model()
# Train the model (in silent mode, verbose=0)
history = model.fit(partial_train_data, partial_train_targets,
validation_data=(val_data, val_targets),
epochs=num_epochs, batch_size=1, verbose=0)
mae_history = history.history['val_mean_absolute_error']
all_mae_histories.append(mae_history)
我得到一个错误KeyError:'瓦尔_mean_absolute_error'
mae_history = history.history['val_mean_absolute_error']
我猜解决方案是找出正确的参数来替换瓦尔_mean_absolute_error。我试着查看一些Keras文档,以确定正确的键值。有谁知道正确的key值?
5条答案
按热度按时间nukf8bse1#
代码中的问题是,当您编译模型时,您没有添加特定的“
mae
”指标。如果你想在代码中添加'
mae
'指标,你需要这样做:model.compile('sgd', metrics=[tf.keras.metrics.MeanAbsoluteError()])
model.compile('sgd', metrics=['mean_absolute_error'])
在此步骤之后,您可以尝试查看正确的名称是否为
val_mean_absolute_error
或val_mae
。最有可能的是,如果您像我在选项2中演示的那样编译模型,您的代码将使用“val_mean_absolute_error
”。此外,您还应该将代码片段放在编译模型的位置,它在上面的问题文本中缺失(即
build_model()
函数)0yg35tkg2#
我用'
val_mae
'替换了'val_mean_absolute_error
',它对我很有效bcs8qyzn3#
仅供参考,我遇到了同样的问题,即使在改变了history.history['val_mae']行后,这个问题仍然存在。
在我的例子中,为了让瓦尔_mae dict对象出现在history.history对象中,我需要确保model.fit()代码包含'validation_data =(val_data,val_targets)'参数。我一开始就忽略了这一点。
cwxwcias4#
我通过下面的代码行更新它:
wz8daaqr5#
历史对象应包含与编译对象相同的名称。例如:
mean_absolute_error
给出val_mean_absolute_error
mae
给出val_mae
accuracy
给出val_accuracy
acc
给出val_acc