为什么我们在keras model.fit()中需要y变量?

问题描述 投票:0回答:1

我正在使用手写数字数据集。数据加载如下:

(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)即可对其进行训练。

python tensorflow machine-learning neural-network digits
1个回答
0
投票

X_train_flattened
提供图像作为输入,
y_train
(告诉模型它是 0-9 的数字的标签)告诉模型应该为每个图像预测什么。

这在监督机器学习(监督机器学习教程)中是必要的,以便模型了解每个图像属于哪个分类。

损失函数(此处为

sparse_categorical_crossentropy
)计算模型的预测与真实标签的偏差程度(
y_train
)。如果没有
y_train
,模型就没有任何计算这个误差的依据,也不知道如何改进。

在训练过程中,模型使用通过将其预测与

y_train
进行比较而计算出的误差(或损失),通过反向传播来更新其参数。这是关于反向传播的原始论文(George Hinton 反向传播)。

© www.soinside.com 2019 - 2024. All rights reserved.