【问题标题】:loss function numbers are looking different损失函数数字看起来不同
【发布时间】:2021-03-07 19:34:25
【问题描述】:

我是深度学习的新手,但我知道通常情况下,损失函数输出的数字会是 0.4、0.6 之类的数字,但我得到的损失值看起来有点不同。有人能告诉我发生了什么吗?

在 epoch 中,我们可以看到损失数字看起来像这样 4736.9226。

代码:

#3d模型

from keras.layers import Conv3D, MaxPooling3D, BatchNormalization, Dropout, Dense, Flatten, concatenate
from keras.models import Model
from keras import Input
# 3D Convolutional Model:
input_model=Input(shape=(10,250,250,1))
layer=Conv3D(32,(3,3,3),strides=(1,1,1),activation='relu')(input_model)
layer=MaxPooling3D((2,2,2))(layer)
layer=Conv3D(64,(3,3,3),strides=(1,1,1),activation='relu')(layer)
layer=MaxPooling3D((2,2,2))(layer)
layer=BatchNormalization()(layer)
layer=Flatten()(layer)
layer=Dense(128,activation='relu')(layer)
layer=Dropout(0.1)(layer)
layer=Dense(64,activation='relu')(layer)
layer=Dropout(0.1)(layer)
layer=Dense(32,activation='relu')(layer)
layer=Dropout(0.1)(layer)
layer_output=Dense(2,activation='softmax')(layer)
model_3dConv=Model(input_model,layer_output)
model_3dConv.summary()

epoch:

    Epoch 1/10
    13/13 [==============================] - 91s 7s/step - loss: 4736.9226 - acc: 0.4918 - val_loss: 387258.4062 - val_acc: 0.5625
    Epoch 2/10
    13/13 [==============================] - 90s 7s/step - loss: 4021.6621 - acc: 0.5050 - val_loss: 246713.4844 - val_acc: 0.5625
    Epoch 3/10
    13/13 [==============================] - 89s 7s/step - loss: 3532.2977 - acc: 0.5936 - val_loss: 166724.2500 - val_acc: 0.5625

Whereas if I use 2d model this does not happen.

10 epoch 后更新:

[![Epoch 1/10
13/13 \[==============================\] - 91s 7s/step - loss: 4736.9226 - acc: 0.4918 - val_loss: 387258.4062 - val_acc: 0.5625
Epoch 2/10
13/13 \[==============================\] - 90s 7s/step - loss: 4021.6621 - acc: 0.5050 - val_loss: 246713.4844 - val_acc: 0.5625
Epoch 3/10
13/13 \[==============================\] - 89s 7s/step - loss: 3532.2977 - acc: 0.5936 - val_loss: 166724.2500 - val_acc: 0.5625
Epoch 4/10
13/13 \[==============================\] - 94s 7s/step - loss: 2712.2616 - acc: 0.5445 - val_loss: 112906.0078 - val_acc: 0.5625
Epoch 5/10
13/13 \[==============================\] - 89s 7s/step - loss: 3779.4980 - acc: 0.5557 - val_loss: 75516.1641 - val_acc: 0.5625
Epoch 6/10
13/13 \[==============================\] - 89s 7s/step - loss: 3778.8524 - acc: 0.5036 - val_loss: 53132.3477 - val_acc: 0.6875
Epoch 7/10
13/13 \[==============================\] - 91s 7s/step - loss: 3544.4086 - acc: 0.4869 - val_loss: 36817.3906 - val_acc: 0.6875][1]][1]

【问题讨论】:

    标签: python deep-learning tensor


    【解决方案1】:

    绝对没有理由the loss function output would be in digits like 0.4, 0.6 something。我不确定您在这里使用什么损失函数,但例如损失函数mse 可以是来自[0, inf) 的任何正数。最重要的是你的 loss/val_loss 应该在每个时期都下降,看起来你正在这样做。

    训练完整的 10 个 epoch 并检查 val_loss 是否下降,并且希望 val_acc 上升。

    【讨论】:

    • 请看看我更新的纪元,我的纪元在 7 之后停止,看起来模型在那之后没有学习更多。
    • 您的模型从387k to 36k 的 val_loss 和56% to 69% 的 val_acc 开始,它正在学习,很多。您可以进行更改以更有效地实现这些结果,但我相信我回答了您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2019-02-06
    • 2021-05-23
    相关资源
    最近更新 更多