使用 model.fit() 和 validation_split 后获取训练/测试数据

Posted

技术标签:

【中文标题】使用 model.fit() 和 validation_split 后获取训练/测试数据【英文标题】:Get train/test data after using model.fit() with validation_split 【发布时间】:2020-03-07 06:58:08 【问题描述】:

我正在使用验证拆分训练和拟合 keras 模型:

self.model = Sequential()
self.model.add(LSTM(hidden_units, input_shape=(1, n_features), dropout=drp))       
self.model.add(Dense(n_classes, activation='sigmoid'))
self.model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
self.model.build(X_train.shape)

self.history = self.model.fit(X, y.values, epochs=epochs, batch_size=32, validation_split=0.33, shuffle=True,  callbacks=cb_list)

拟合后,我想访问使用的测试集。 我该怎么做?

【问题讨论】:

您应该提供更多信息。你用的是什么框架?标签上写着 scikit-learn,但你显示的方法签名让我觉得你正在使用 keras 或其他一些深度学习框架。 @xibalba1 请看我的编辑 您没有在上面的模型中使用测试。另外我认为你的意思是写self.model.fit(X, y.values, epochs=epochs, batch_size=32, validation_split=0.33, shuffle=True, callbacks=cb_list)X = X_trainy.values = y_train @Philip 是的,这将 X,y 拆分为 0.66 / 0.33 对吗?那么如何访问验证集呢? 据我所知documentation,您可以访问history.history['acc'],history.history['val_acc'],history.history['loss'], history.history['val_loss']。但是,我在测试集上没有看到任何提及。但是,您可以在此操作之前拆分为测试和训练 【参考方案1】:

根据documentation 中的常见问题解答,validation_split 属性使最后 % 的样本成为您的验证数据。

在您的情况下,您将 validation_split 的值设置为 0.33。这意味着 X 中最后 33% 的样本被用作验证数据。

所以,您可以直接切掉X 的最后 33% 并使用它。

【讨论】:

以上是关于使用 model.fit() 和 validation_split 后获取训练/测试数据的主要内容,如果未能解决你的问题,请参考以下文章

model.fit(X,y) 和 model.fit(train_X, train_y) 有啥区别

model.predict() 和 model.fit() 做啥?

同时运行 model.fit() 和 TensorBoard?

无法使用 GradientTape 重现 model.fit

如何从大型 .h5 数据集中批量读取数据,使用 ImageDataGenerator 和 model.fit 进行预处理,所有这些都不会耗尽内存?

使用 keras.utils.Sequence 和 keras.model.fit_generator 时出现 KeyError。