rob*_*rob 7 python neural-network keras tensorflow
我对 TensorFlow 和 Keras 完全陌生,我正在尝试尝试一些我在网上找到的代码。
特别是,我使用的是 Fashion-MNIST - 由 60000 个示例和 10000 个示例的测试集组成。每个都是 28x28 灰度图像。
我正在遵循本教程“ https://towardsdatascience.com/building-your-first-neural-network-in-tensorflow-2-tensorflow-for-hackers-part-i-e1e2f1dfe7a0 ”,直到的定义
history = model.fit(
train_dataset.repeat(),
epochs=10,
steps_per_epoch=500,
validation_data=val_dataset.repeat(),
validation_steps=2)
Run Code Online (Sandbox Code Playgroud)
只要我理解,我就需要使用train_dataset.repeat()作为输入数据集,否则我将没有足够的训练示例使用这些超参数值(epochs、steps_per_epochs)。
我的问题是:如何避免使用.repeat()?我需要如何更改超参数?
为了简单起见,我在这里处理代码:
def preprocess(x,y):
x = tf.cast(x,tf.float32) / 255.0
y = tf.cast(y, tf.float32)
return x,y
def create_dataset(xs, ys, n_classes=10):
ys = tf.one_hot(ys, depth=n_classes)
return tf.data.Dataset.from_tensor_slices((xs, ys)).map(preprocess).shuffle(len(ys)).batch(128)
model.compile(optimizer = 'adam', loss =tf.losses.CategoricalCrossentropy(from_logits= True), metrics =['accuracy'])
history1 = model.fit(train_dataset.repeat(),
epochs=10,
steps_per_epoch=500,
validation_data=val_dataset.repeat(),
validation_steps=2)
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果您不想使用 .repeat() ,则需要让模型在每个时期仅将整个数据传递一次。
为了做到这一点,您需要计算模型通过整个数据集需要多少步,计算很简单:
steps_per_epoch = len(train_dataset) // batch_size
Run Code Online (Sandbox Code Playgroud)
因此,如果 train_dataset 包含 60 000 个样本,batch_size 为 128,则每个 epoch 需要 468 个步骤。
通过像这样设置此参数,您可以确保不超过数据集的大小。
归档时间: |
|
查看次数: |
6766 次 |
最近记录: |