我的样本X_trn和y_trn只有一项。我建立了一个神经网络来进行分类。我训练了模型,然后使用X_trn进行预测,X_trn的预测与y_trn不同。这是否意味着我的神经网络有问题?
#======================x_trn&y_trn========================#
print(X_trn)
mom12m
0 -0.334957
print(y_trn)
0 4.0
Name: ret_exc_lead1m_w, dtype: float64
#==========================model============================#
mod = Sequential()
mod.add(Input(shape = (X_trn.shape[1],)))
mod.add(Dense(1, activation = 'relu'))
mod.add(Dense(1))
opt = Adam(learning_rate=0.1)
mod.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
history = mod.fit(X_trn, y_trn, epochs=5, batch_size=1)
# predict
y_pred.append(mod.predict(X_trn)[0])
print(y_pred)
[array([1.5509232], dtype=float32),
array([1.6640353], dtype=float32),
array([0.], dtype=float32),
array([0.], dtype=float32)]
我希望模型预测 X_trn 应该获得接近 y_trn 的值。但情况却大不相同?我哪里可能错了?
即使我将损失函数更改为“mse”,预测值也约为 0.5~1.6,每次值发生变化并且与 y_trn 不同。
首先,让我们澄清一下您正在处理的问题的类型。这不是分类任务,因为您必须至少有两个类才能进行分类。我认为这是一个回归任务,因为您预测的是连续值。 由于您正在研究回归问题,因此应该使用适合回归的损失函数,例如均方误差 (MSE)。您使用的binary_crossentropy损失函数适用于二元分类任务,而不是回归。 您的模型非常简单,只有一个隐藏层和一个神经元。这太简单了,无法捕捉 X_trn 和 y_trn 之间的关系。