如何按顺序加载 MNIST 数据进行训练?
How to load MNIST data sequentially for training?
我现在正在使用 MNIST 和彩色数字版本来训练我的 SemGAN 模型。我已经加载并预处理了数据集。
x_train = x_train[0:10000]
y_train = y_train[0:10000]
x_test = x_test[0:10]
y_test = y_test[0:10]
x_train = x_train.reshape(-1, 28, 28, 1).astype(np.float32)
x_test = x_test.reshape(-1, 28, 28, 1).astype(np.float32)
现在我必须将每个重新整形的数据 (28, 28, 1) 按顺序提供给模型(分批或随机批处理),我该怎么做?谁能帮帮我?
您需要定义一个神经网络架构。这里有一个简单的 CNN 仅供说明之用,您可以针对您的案例研究 GAN 架构并构建它或提出一个单独的问题。
mnist_model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16,[3,3], activation='relu',
input_shape=(None, None, 1)),
tf.keras.layers.Conv2D(16,[3,3], activation='relu'),
tf.keras.layers.GlobalAveragePooling2D(),
tf.keras.layers.Dense(10)
])
然后您需要编译损失、优化器、指标等。同样,这是分类的基本编译。
mnist_model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[tf.keras.metrics.CategoricalAccuracy()])
现在开始回答你的问题。一切设置完成后,您可以像这样使用模型的拟合函数
mnist_model.fit(x_train, y_train, batch_size=64, epochs=1, shuffle=True, validation_split=0.05)
批次大小为 64,因此拟合以 64 为间隔遍历所有批次,直到完成。有一个用于验证的拆分参数,用于检查模型是否正在训练(而不是过度训练)——因此,结合 64 批量大小,将有 ceil(60000*0.95/64) 迭代,其中 60000 来自大小训练集(你选择了 10000)。在这种情况下,默认情况下,调用将随机洗牌每个时期的训练集。最后,epoch 为 1,但实际上您可能希望更高。
我现在正在使用 MNIST 和彩色数字版本来训练我的 SemGAN 模型。我已经加载并预处理了数据集。
x_train = x_train[0:10000]
y_train = y_train[0:10000]
x_test = x_test[0:10]
y_test = y_test[0:10]
x_train = x_train.reshape(-1, 28, 28, 1).astype(np.float32)
x_test = x_test.reshape(-1, 28, 28, 1).astype(np.float32)
现在我必须将每个重新整形的数据 (28, 28, 1) 按顺序提供给模型(分批或随机批处理),我该怎么做?谁能帮帮我?
您需要定义一个神经网络架构。这里有一个简单的 CNN 仅供说明之用,您可以针对您的案例研究 GAN 架构并构建它或提出一个单独的问题。
mnist_model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16,[3,3], activation='relu',
input_shape=(None, None, 1)),
tf.keras.layers.Conv2D(16,[3,3], activation='relu'),
tf.keras.layers.GlobalAveragePooling2D(),
tf.keras.layers.Dense(10)
])
然后您需要编译损失、优化器、指标等。同样,这是分类的基本编译。
mnist_model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[tf.keras.metrics.CategoricalAccuracy()])
现在开始回答你的问题。一切设置完成后,您可以像这样使用模型的拟合函数
mnist_model.fit(x_train, y_train, batch_size=64, epochs=1, shuffle=True, validation_split=0.05)
批次大小为 64,因此拟合以 64 为间隔遍历所有批次,直到完成。有一个用于验证的拆分参数,用于检查模型是否正在训练(而不是过度训练)——因此,结合 64 批量大小,将有 ceil(60000*0.95/64) 迭代,其中 60000 来自大小训练集(你选择了 10000)。在这种情况下,默认情况下,调用将随机洗牌每个时期的训练集。最后,epoch 为 1,但实际上您可能希望更高。