使用只有一个数据点的数据集来训练神经网络无法完美预测y变量?

问题描述 投票:0回答:1

我的样本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 不同。

machine-learning keras deep-learning neural-network
1个回答
0
投票

首先,让我们澄清一下您正在处理的问题的类型。这不是分类任务,因为您必须至少有两个类才能进行分类。我认为这是一个回归任务,因为您预测的是连续值。 由于您正在研究回归问题,因此应该使用适合回归的损失函数,例如均方误差 (MSE)。您使用的binary_crossentropy损失函数适用于二元分类任务,而不是回归。 您的模型非常简单,只有一个隐藏层和一个神经元。这太简单了,无法捕捉 X_trn 和 y_trn 之间的关系。

© www.soinside.com 2019 - 2024. All rights reserved.