如何使用序列将验证数据传递给Keras ?



查看TensorFlow文档,它说model.fit(validation_data)不能与keras.utils.Sequence一起使用

请注意validation_data不支持x中支持的所有数据类型,例如,dict, generator或keras.utils.Sequence.

我的验证集可能只是小到足以容纳RAM,但我希望避免将其全部加载到RAM中,以防我的数据集增长。

要了解我当前的序列是如何工作的,下面是代码:

指出:

  • 该序列目前仅处理train_data,这是一个包含我的示例和标签的规范化数组。我对val_datatest_data有类似的数组。
  • 这个循环可能看起来有点奇怪,因为我正在使用时间序列数据,为每个示例拉一个窗口。
class MyGenerator(tf.keras.utils.Sequence):
'Generates data for Keras'
def __init__(self, ids, train_dir):
'Initialization'
self.ids = ids
self.train_dir = train_dir
def __len__(self):
'Denotes the number of batches per epoch'
return len(self.ids)
def __getitem__(self, index):
batch_id = self.ids[index]
# load data
X_train, y_train = [], []
start_index = seq_len*batch_id
end_index = start_index + seq_len
for i in range(start_index, end_index):  
start_seq = i + start_index
X_train.append(train_data[i-seq_len:i])  
y_train.append(train_data[:, 4][i]) 
# Save our batch
X = np.array(X_train)
y = np.array(y_train)
return X, y

是否有办法让我批量处理我的验证集?我更喜欢使用序列,但如果这是不可能的,我愿意接受其他选择。

根据文档:

validation_data可以是:

  • 元组(x_val, y_val)的Numpy数组或张量
  • 元组(x_val, y_val, val_sample_weights)
  • 数据集

对于前两种情况,必须提供batch_size。对于最后一种情况,可以提供validation_steps。

因此,通过提供batch_sizevalidation_steps,validation_data将被批量处理。

相关内容

  • 没有找到相关文章

最新更新