使用 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_train
和y.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。