You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow训练IMDB模型显示782而非25000,是否正常?

训练IMDB情感分类模型时,Epoch显示782/782而非25000是否正常

作为TensorFlow新手,我在用IMDB数据集训练情感分类模型。加载数据并构建包含Flatten层的模型后,执行fit方法时每个epoch显示782/782,而不是我预期的25000。我担心模型是不是只遍历了782个样本,而非全部25000个训练样本,想确认这种情况是否正常。

数据加载与预处理代码

import tensorflow_datasets as tfds
import tensorflow as tf
import numpy as np
imdb ,info = tfds.load("imdb_reviews",with_info=True,as_supervised=True)
(train_data , test_data )= (imdb["train"],imdb["test"])
training_sentences = []
training_labels = []
testing_sentences = []
testing_labels = []
for s,l in train_data:
    training_sentences.append(str(s.numpy()))
    training_labels.append(l.numpy())
for s,l in test_data:
    testing_sentences.append(str(s.numpy()))
    testing_labels.append(l.numpy())
training_labels_final = np.array(training_labels)
testing_labels_final = np.array(testing_labels)
vocab_size = 10000
emmbeding_dim = 16
max_length = 120
trunc_type = "post"
oov_tok = "<OOV>"
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
tokenizer = Tokenizer(num_words= vocab_size,oov_token=oov_tok)
tokenizer.fit_on_texts(training_sentences)
word_index = tokenizer.word_index
sequence = tokenizer.texts_to_sequences(training_sentences)
paded = pad_sequences(sequence,maxlen=max_length,truncating=trunc_type)
testing_sequences = tokenizer.texts_to_sequences(testing_sentences)
testing_padded = pad_sequences(testing_sequences,maxlen=max_length, truncating=trunc_type)

模型定义与训练代码

my_model_with_flatten = tf.keras.Sequential([
    tf.keras.layers.Embedding(vocab_size,emmbeding_dim,input_length=max_length),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(units=6,activation='leaky_relu'),
    tf.keras.layers.Dense(units=1,activation='sigmoid'),
]) 
my_model_with_flatten.compile(optimizer='adam'
                              ,loss='binary_crossentropy',metrics=["accuracy"])
flaten_history=my_model_with_flatten.fit(x=paded,y=training_labels_final,epochs=10,
                                         validation_data=[testing_padded,testing_labels_final])

训练输出

Epoch 1/10
782/782 [==============================] - 6s 7ms/step - loss: 0.4893 - accuracy: 0.7504 - val_loss: 0.3950 - val_accuracy: 0.8175
Epoch 2/10
782/782 [==============================] - 4s 6ms/step - loss: 0.2317 - accuracy: 0.9140 - val_loss: 0.4159 - val_accuracy: 0.8166
Epoch 3/10
782/782 [==============================] - 5s 6ms/step - loss: 0.0799 - accuracy: 0.9814 - val_loss: 0.5299 - val_accuracy: 0.8070
Epoch 4/10
782/782 [==============================] - 4s 6ms/step - loss: 0.0198 - accuracy: 0.9978 - val_loss: 0.6216 - val_accuracy: 0.8051
Epoch 5/10
782/782 [==============================] - 4s 6ms/step - loss: 0.0063 - accuracy: 0.9995 - val_loss: 0.6861 - val_accuracy: 0.8022
Epoch 6/10
782/782 [==============================] - 4s 6ms/step - loss: 0.0018 - accuracy: 1.0000 - val_loss: 0.7462 - val_accuracy: 0.8046
Epoch 7/10
782/782 [==============================] - 4s 6ms/step - loss: 7.7573e-04 - accuracy: 1.0000 - val_loss: 0.7966 - val_accuracy: 0.8045
Epoch 8/10
782/782 [==============================] - 5s 6ms/step - loss: 4.2356e-04 - accuracy: 1.0000 - val_loss: 0.8434 - val_accuracy: 0.8060
Epoch 9/10
782/782 [==============================] - 5s 6ms/step - loss: 2.5064e-04 - accuracy: 1.0000 - val_loss: 0.8865 - val_accuracy: 0.8057
Epoch 10/10
782/782 [==============================] - 5s 7ms/step - loss: 1.4970e-04 - accuracy: 1.0000 - val_loss: 0.9293 - val_accuracy: 0.8056

解答

这种情况完全正常,你不用担心模型只遍历了782个样本。

这里的782/782指的是训练步数,不是样本数量。Keras的fit方法默认使用batch_size=32,也就是每次迭代处理32个样本。IMDB训练集总共有25000个样本,25000除以32等于781.25,向上取整后就是782步,意味着每个epoch会把25000个样本全部遍历一遍。

如果想要验证这个逻辑,可以手动设置batch_size=1,此时每个epoch的步数就会变成25000,和你预期的一致。另外从训练输出的准确率来看,第一个epoch达到75%左右,这也符合IMDB情感分类模型训练的正常表现,进一步说明模型确实用到了全部训练数据。

内容的提问来源于stack exchange,提问作者Reza shahriari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:37:09