【问题标题】:Why I am getting zeros in both loss and accuracy in tensorflow为什么我在张量流中的损失和准确性都为零
【发布时间】:2021-08-12 17:09:06
【问题描述】:

在为分类问题构建张量流模型时,准确率和损失均获得

我在这里发布了一个示例时代:

model=Sequential()
model.add(Dense(100,input_dim=X_train.shape[1],activation='sigmoid'))
model.add(Dense(100))
model.add(Dense(1,activation='softmax'))
model.compile(loss='categorical_crossentropy',metrics=['accuracy'],
                                              optimizer='rmsprop')
model.fit(X_train,y_train,epochs=5,verbose=1)
Epoch 2/5
33/33 [==============================] - 1s 41ms/step - loss: 0.0000e+00 - accuracy: 0.0000e+00

【问题讨论】:

  • 你能显示 y_train.shape
  • # y_train.shape=(1043,) and X_train.shape is (1043, 22195)
  • @Netim 谢谢,我试过了,但没有任何改变
  • 问题可能来自您使用的最后一层的激活函数。 AS Softmax 输出概率,因此要么切换到 sigmoid 和 binary_crossentropy 作为损失,要么将输出形状修改为 2,如果您决定使用大小为 2 的 Dense 层进行预测,则需要修改 y_true 形状(我删除了我的最后一条评论因为我想念你的代码)
  • 谢谢@Netim,但它不适用于 binary_crossentropy 和 sigmoid .. 我必须对 4 个值进行分类,所以我使用了 softmax

标签: python tensorflow machine-learning keras neural-network


【解决方案1】:

您应该执行以下操作:

  1. 检查 Y 的唯一值的数量。这是您的目标类的数量。据我了解,您有 4 个独特的课程。现在您将设置唯一类的数量作为最后一个输出层中的单位以及softmax 激活,因为问题是多类而不是多标签。
model.add(Dense(4,activation='softmax'))
  1. 现在,如果您的 Y 形状为 ( _ , ),则表示 Y 是一个向量,每个类都由一个整数表示,因此是稀疏的。在这种情况下,您将损失更改为 SparseCategoricalCrossentropy,之后这将是最终代码。
model=Sequential()
model.add(Dense(100,input_dim=X_train.shape[1],activation='sigmoid'))
model.add(Dense(100))
model.add(Dense(4, activation='softmax'))

model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(),
               metrics=['accuracy'],
              optimizer='rmsprop')

model.fit(X_train,y_train,epochs=5,verbose=1)

【讨论】:

  • array([[3.91234457e-01, 3.96843821e-01, 3.91917937e-02, 3.77120264e-02, 1.35017902e-01], [1.50013832e-07, 4.60939949-49. e-01, 1.93847320e-08, 4.24148688e-10], [1.34745468e-08, 1.16067994e-07, 9.99999881e-01, 1.64661831e-08, 3.86613380e-11],..... 出现错误像这样在使用一种热编码后,损失和准确性得到了修复,但是在评估时我得到了这个.....即 model.predict(X_test)
  • @seerammoui 这些不是错误,而是概率。对于第一个示例,即[3.91234457e-01, 3.96843821e-01, 3.91917937e-02, 3.77120264e-02, 1.35017902e-01],这大致等于[0.391, 0.396, 0.039, 0.037, 0.135]。这表示预测属于第 0 类的概率是 0.39,第 1 类是 0.39,第 2 类是 0.039,第 3 类是 0.037,第 4 类是 0.135。
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 2016-09-29
  • 2019-03-13
  • 1970-01-01
  • 2019-02-18
相关资源
最近更新 更多