我在做手写体识别的时候有个疑问
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from keras.layers import Dense, Flatten
epochs = 10 # 迭代次数
batch_size = 32 # batch_size是一次训练所选取的样本数。 太小会导致训练慢,过拟合等问题,太大会导致欠拟合。所以要适当选择
# 加载mnist数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 把数据变成float32更精确
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train, x_test = x_train / 255.0, x_test / 255.0 # 归一化,可加快模型收敛,帮助提高模型精确度
y_train_onehot = tf.keras.utils.to_categorical(y_train) # 将标签转换成独热编码,就是把类别0-9变成2进制,方便训练
y_test_onehot = tf.keras.utils.to_categorical(y_test)
#建立模型
model = tf.keras.Sequential()#创建一个Sequential对象,方便我们堆叠各个卷积层。
# 输入格式28*28
model.add(Flatten(input_shape=(28, 28)))
# 中间隐藏层激活函数用relu,全连接层,共两层后半部分相当于是构建了一个隐藏层为128
model.add(Dense(128, activation='relu'))
#输出层为10的普通的神经网络。最后一层的激活函数是softmax,10位恰好可以表达0-9十个数字。
model.add(Dense(10, activation='softmax'))
#loss函数使用交叉熵
# 独热编码用categorical_crossentropy
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(x_train, y_train_onehot, batch_size=batch_size, epochs=epochs)
model.save('model.h5')
print('saved total model.')
运行的时候出现
1875/1875 [==============================] - 2s 899us/step - loss: 0.0161 - accuracy: 0.9952
batch_size=32的时候,下面进度条最左边的数字是1875,如果把batch_size调大,最左边的数字会相应变小,请问这两者之间存在什么关联?