查看TensorFlow文档,它说model.fit(validation_data)
不能与keras.utils.Sequence
一起使用
请注意validation_data不支持x中支持的所有数据类型,例如,dict, generator或keras.utils.Sequence.
我的验证集可能只是小到足以容纳RAM,但我希望避免将其全部加载到RAM中,以防我的数据集增长。
要了解我当前的序列是如何工作的,下面是代码:
指出:
-
该序列目前仅处理
train_data
,这是一个包含我的示例和标签的规范化数组。我对val_data
和test_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_size
或validation_steps
,validation_data
将被批量处理。