有一个用于预测的深层模型。
输出是 0 到 80 之间的一些数字。(在数据集中,输出为 0-80)
模型损失值为 70,我想减少它。
我在通过测试值评估模型后打印了输出,并且一些预测值大于 80 或小于 0。
我决定在训练步骤中设置最后一层来预测 0-80,因此我在最终密集层之后设置了一个 lambda 层来裁剪输出值。
代码:
def relu_advanced(x):
return K.relu(x, max_value=80)
def createModel4():
model = models.Sequential()
model.add(Conv2D(256,(3, 3),
activation='relu',
input_shape=(320,20,1), padding='same'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Flatten())
#model.add(Dense(5*320, activation= 'relu'))
model.add(Dense(5*320))
model.add(Lambda(relu_advanced))
model.summary()
return model
我测试了有和没有 relu_advanced 的模型,不幸的是,损失值随着 advanced_relu 增加!
虽然没有大于 80 或小于零的值,但我不知道 Loss 增加会发生什么情况?
谢谢