【问题标题】:Method of visualizing fit of cross validated model交叉验证模型拟合的可视化方法
【发布时间】:2019-11-19 13:55:53
【问题描述】:

在使用交叉验证时,如何编写代码以可视化我的准确性和损失发展的进度?通常我会在训练模型时将变量名称“历史”分配给拟合函数,但在交叉验证的情况下,它不会显示验证曲线。我认为是这种情况,因为我没有在 fit 函数中调用 validation_data(如下)。

kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=seed)
cvscores = []
for train, test in kfold.split(x_train, y_train):
   model = Sequential()
   model.add(layers.Conv2D(32,(4,4), activation = 'relu', input_shape = (224,224,3)))
   model.add(layers.MaxPooling2D((2, 2)))
   model.add(layers.Conv2D(64, (4,4), activation = 'relu'))
   model.add(layers.MaxPooling2D((2, 2)))
   model.add(layers.Flatten())
   model.add(layers.Dense(64, activation = 'relu'))
   model.add(layers.Dropout(0.5))
   model.add(layers.Dense(1, activation = 'sigmoid'))
	 
   model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
	
   history = model.fit(x_train[train], y_train[train], epochs=15, batch_size=64)
	
   scores = model.evaluate(x_train[test], y_train[test], verbose=0)
   print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
   cvscores.append(scores[1] * 100)
print("%.2f%% (+/- %.2f%%)" % (np.mean(cvscores), np.std(cvscores)))

通常我会使用如下代码,但由于我没有合适的验证数据,我不知道如何处理它。

plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.show()

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.show()

]1]1

【问题讨论】:

    标签: python keras cross-validation data-augmentation


    【解决方案1】:

    您可以使用TensorBoard 转储所有内容。通常,您会进行以下拆分:训练、测试、验证。您使用第三次拆分验证您的模型。您可以使用来自sklearn 的指标。大多数时候人们不会交叉验证他们的 DNN 模型,因为这会花费太多时间。但是,一旦有了这些模型,最好使用boxplot 绘制指标分布。

    【讨论】:

    • 谢谢,在版本混乱之后,我设法让 TensorBoard 工作。不幸的是,在这里我无法可视化验证准确性和损失 - 我想看看我是否在图表中过度拟合。您是否知道将这些图表按折叠可视化的方法,或者这是通常不做的事情?
    • 猜你已经检查了docs。当你启动 tensorboard 时,你只输入 dir 来记录文件。应用程序正在加载文件夹中的每个日志文件。您可以为每个交叉验证拆分输出一个日志。在每次拆分中,您都会实例化新模型,因此无论如何您都会有单独的 tf 会话。您还可以再创建一个虚拟会话,您可以在其中聚合所有情节以获得堆叠的 Joy Division 之类的情节。
    • 检查this线程。
    • web 上有很多教程。请注意TensorFlow 2.0 中的一些变化。
    • 没问题。如果您遇到更多问题,请告诉我们。
    猜你喜欢
    • 2020-03-26
    • 2019-09-17
    • 2020-05-29
    • 2019-10-01
    • 2018-04-02
    • 2013-05-19
    • 2014-02-18
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多