模型将负值预测为零
Model predicts negative values as zeros
我正在训练具有以下结构的 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。这是我选择的损失函数的错误吗?如果是这样,我应该选择哪个其他损失函数?还是我必须以不同的方式扩展我的数据?
这是因为您在输出层应用了relu
激活。
我正在训练具有以下结构的 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。这是我选择的损失函数的错误吗?如果是这样,我应该选择哪个其他损失函数?还是我必须以不同的方式扩展我的数据?
这是因为您在输出层应用了relu
激活。