Python 为什么我的Keras模型只在1407个训练实例上训练,而不是45k?

Python 为什么我的Keras模型只在1407个训练实例上训练,而不是45k?,python,tensorflow,machine-learning,keras,data-science,Python,Tensorflow,Machine Learning,Keras,Data Science,出于某种奇怪的原因,它说它只训练1407个实例,尽管我传递的训练数据的形状是45k Epoch 2/100 **1407/1407** [==============================] - 17s 12ms/step - loss: 1.9419 - accuracy: 0.2907 - val_loss: 2.1100 - val_accuracy: 0.2406 Epoch 3/100 数字1407不是指采样数,而是指每个历元的步长。例如,假设您有1000个训练样本。如果将

出于某种奇怪的原因,它说它只训练1407个实例,尽管我传递的训练数据的形状是45k

Epoch 2/100
**1407/1407** [==============================] - 17s 12ms/step - loss: 1.9419 - accuracy: 0.2907 - val_loss: 2.1100 - val_accuracy: 0.2406
Epoch 3/100

数字1407不是指采样数,而是指每个历元的步长。例如,假设您有1000个训练样本。如果将batch_size设置为100,则每个历元需要10个步骤来遍历整个数据集。如果未指定批次大小model.fit,则默认为32。45000/32=1406.25,因此将其四舍五入为1407。1407 X 32=45024,因此,对于每个历元,您将对整个训练集进行一次检查,再加上24个额外的样本。对于验证数据,最好每个历元只检查一次验证集。因此,请尝试选择验证批大小,使验证样本/验证批大小为整数,然后将其指定为model.fit中验证步骤的值。这里有一个方便的小函数,可以确定最大的可用批处理大小和步骤数,其中length是数据集中的样本数,b_max是根据内存容量允许的最大批处理大小

x_train.shape
=> (45000, 32, 32, 3)
def get_bs(长度,b_max):

batch_size=sorted([int(length/n)表示范围(1,length+1)内的n,如果长度%n==0且长度/nCan,您可以显示如何设置模型,以及调用文档中的
.fit()
?时使用的参数:“batch_size:整数或无。每次梯度更新的样本数。如果未指定,batch_size将默认为32”什么是45000/32?好吧,我现在明白了。但是为什么我在网上读到的这段代码在没有指定批量大小的情况下有45k步数…它不应该也是1407k吗?
38/100 45000/45000[=====================================================================================================================-15s 332us/样本-损失:0.9966-准确度:0.6496-val损失:1.3946-val精度:0.5340
def get_bs(length,b_max):
    batch_size=sorted([int(length/n) for n in range(1,length+1) if length % n ==0 and length/n<=b_max],reverse=True)[0]  
    return batch_size,int(length/batch_size)
# example
batch_size, steps=get_bs(1000, 80)
print (batch_size, steps)
# results in  batch_size=50 and steps=20