在Keras手写数字分类任务中,model.fit()里y_train的作用是什么?
MNIST分类任务中model.fit()里y_train的作用
问题背景
我正在处理手写数字数据集,数据加载方式如下:
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()
用于数字分类的神经网络代码如下:
model = keras.Sequential([ keras.layers.Dense(10, input_shape=(784,), activation='sigmoid') ]) model.compile( optimizer='adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'] ) model.fit(X_train_flattened, y_train, epochs=5)
我的问题是:**在model.fit()中,y_train的作用是什么?**这是一个分类任务,我认为网络训练只需要输入X_train_flattened即可。
解答
你的这个理解有误,这个场景下的神经网络训练属于监督学习,没有y_train(真实标签)的话,模型根本无法完成有效训练。
具体到这个MNIST任务:
X_train_flattened是输入的手写图像特征(扁平化后的784维像素值),模型会基于这些特征输出10维的预测结果(对应0-9每个数字的概率)。y_train是每一张训练图像对应的真实数字标签(比如某张图是数字"3",对应的标签就是3)。
训练过程中,模型会把自己的预测结果和y_train里的真实标签做对比,通过你设置的sparse_categorical_crossentropy损失函数计算两者的差异,再借助adam优化器根据这个差异反向调整网络中的权重参数,让模型后续的预测结果越来越接近真实标签。
说白了,y_train就是模型训练时的"参考答案"——没有它,模型就是在无目标地瞎猜,根本学不到区分不同手写数字的规律。
内容的提问来源于stack exchange,提问作者levi mungai
相关产品推荐
相关产品推荐

