我写了一个DataGenerator并初始化了一个validate_generator。如果指定用于培训的批次大小大于验证集的大小,则不会计算验证损失/ acc。
如果验证集更大,则一切正常。指定validation_steps没有帮助。
# Create data generators
training_generator = DataGenerator(partition['train'], embedding_model, **params)
validation_generator = DataGenerator(partition['validation'], embedding_model, **params)
# create LSTM
model = get_LSTM_v1(seq_length, input_dim, hot_enc_dim)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# train LSTM
history = model.fit_generator(
generator=training_generator,
validation_data=validation_generator,
epochs=n_epochs,
use_multiprocessing=True,
workers=cpu_cores
)
答案 0 :(得分:1)
DataGenerator
可能需要修改,以便在批次大小小于验证集的大小时返回部分批次。
在大多数情况下,发生器返回的可计算批次的数量对应于样本数量除以批次大小的底限。如果批处理大小大于集合的大小,它将返回零。
您可以尝试通过重复数据来解决此问题,以便在需要时有足够的数量来容纳整个批次。