首页 > 解决方案 > 模型将负值预测为零

问题描述

我正在训练具有以下结构的 keras 自动编码器模型:

model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(MAX_CONTEXTS, 3)))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='relu'))
model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])

我的数据是 (number_of_samples, 430, 3) 的形状,包含来自 [-1.9236537371711413, 1.9242677998256246] 的值。该数据已经标准化。然后我训练这个模型:

history = model.fit(X, X, epochs=15, batch_size=2, verbose=1, shuffle=True, validation_split=0.2)

并获得 95.03% 的准确率(怀疑很高,但我现在的问题是别的)。现在当我预测我的数据样本时,正值相对较好,接近它们在输入中的值,但负值都四舍五入为0。这是我选择的损失函数的错误吗?如果是这样,我应该选择哪个其他损失函数?还是我必须以不同的方式扩展我的数据?

标签: pythontensorflowkerasautoencoder

解决方案


这是因为您relu在输出层应用了激活。


推荐阅读