当只有 1 个输入(输入到占位符)时,使用 tf.data.Dataset 是最佳的:
Data = tf.data.Dataset.from_tensor_slices((Inp,Exp));
Data = Data.repeat().shuffle(Dsize).batch(Bsize);
Steps = 1000;
Epochs = round(Steps/(Dsize/Bsize));
...
Model.fit(Data, epochs=Epochs, steps_per_epoch=round(Dsize/Bsize));
然而,当有多个输入时(提供给多个占位符),Keras 不允许提供多个数据集,因此使用原始 Python 'for' 循环来提供批次:
Data = tf.data.Dataset.from_tensor_slices((Inp1,Inp2,Exp));
Data = Data.repeat().shuffle(Dsize).batch(Bsize);
Iter = iter(Data);
Steps = 1000;
...
for I in range(Steps):
X1,X2,Y = next(Iter);
Model.fit(x=[X1,X2], y=Y);
因为 Python 是解释器并在字节码上运行,所以“for”循环应该很慢。恐怕使用自定义“for”循环会降低训练性能。是真的吗?
Smart猫小萌
函数式编程
相关分类