在Keras中训练结果中的损失和准确率是如何表示的

我有两个类,每个类有3张图片。我在Keras中尝试了以下代码。

trainingDataGenerator = ImageDataGenerator()trainGenerator = trainingDataGenerator.flow_from_directory(                        trainingDataDir,                        target_size=(28, 28),                        batch_size = 1,                        seed=7,                        class_mode='binary',                        )FilterSize = (3,3)inputShape = (imageWidth, imageHeight,3)model = Sequential()model.add (Conv2D(32, FilterSize, input_shape= inputShape))model.add (Activation('relu'))model.add ( MaxPooling2D(pool_size=(2,2)))model.add(Flatten())model.add(Activation('relu'))model.add(Dense(1))model.add(Activation('sigmoid'))model.compile(loss='binary_crossentropy',                optimizer = 'rmsprop',                metrics=['accuracy'])model.fit_generator(        trainGenerator,        steps_per_epoch=3,        epochs=epochs)

我的输出:

当我训练这个模型时,我得到了以下输出:

Using TensorFlow backend.Found 2 images belonging to 2 classes.Epoch 1/13/3 [==============================] - 0s - loss: 5.3142 - acc: 0.6667 

我的问题:

我想知道它是如何确定损失和准确率的,以及依据是什么?(即:loss: 5.3142 – acc: 0.6667)。我没有提供任何验证图像来验证模型以找到准确率和损失。这个损失和准确率是针对输入图像本身的吗?

简而言之,我们可以这样说吗:“这个模型在没有验证图像的情况下有%的准确率和%的损失”?


回答:

训练中的损失和准确率不是通过与验证数据进行比较来计算的,而是通过将神经网络对样本x的预测与你在训练集中提供的该样本的标签y进行比较来计算的。

你初始化你的神经网络,并(通常)将所有权重设置为具有特定偏差的随机值。之后,你将训练数据集的特征输入到你的网络中,让它“猜测”结果,即你拥有的标签(如果你像你的情况一样进行监督学习)。

然后,你的框架将这个猜测与实际标签进行比较,并计算误差,然后通过你的网络进行反向传播,从而调整和改进所有权重。

这在没有验证数据的情况下也能很好地工作。

验证数据用于通过让模型在未见过的数据上进行预测来查看模型的质量(损失、准确率等)。通过这种方式,你可以得到所谓的验证损失/准确率,并用这些信息来调整你的超参数。

在最后一步中,你使用测试数据来评估训练的最终质量。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注