用keras神经网络逼近多维输出函数

2024-04-26 21:00:31 发布

您现在位置:Python中文网/ 问答频道 /正文

作为我研究项目的一部分,我想尝试使用Keras神经网络来近似函数f:R^m -> R^n(我对它是全新的)。网络似乎正在学习到某种程度(确实不令人满意)。但网络的预测与预期结果一点也不相似。你知道吗

我有两个numpy数组,其中包含训练数据(函数的m维输入)和训练标签(函数的n维预期输出)。我使用它们来训练我的Keras模型(见下文),这似乎是在学习提供的数据。你知道吗

inputs = Input(shape=(m,))
hidden = Dense(100, activation='sigmoid')(inputs)
hidden = Dense(80, activation='sigmoid')(hidden)
outputs = Dense(n, activation='softmax')(hidden)

opti = tf.keras.optimizers.Adam(lr=0.001)

model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=opti,
             loss='poisson',
             metrics=['accuracy'])

model.fit(training_data, training_labels, verbose = 2, batch_size=32, epochs=30)

当我用一组测试数据和一组测试标签调用模型上的evaluate方法时,我得到了50%以上的明显准确率。然而,当我使用预测方法时,网络的预测结果与预期结果一点也不相似。例如,预期输出的前10个条目是:

[0., 0.08193582, 0.13141066, 0.13495408, 0.16852582, 0.2154705 , 0.30517559, 0.32567417, 0.34073457, 0.37453226]

而预测结果的前十项是:

[3.09514281e-09, 2.20849714e-03, 3.84095078e-03, 4.99367528e-03,
6.06226595e-03, 7.18442770e-03, 8.96730460e-03, 1.03423093e-02, 1.16029680e-02, 1.31887039e-02]

这与我使用的指标有关吗?结果是否可以通过Keras以某种不间断的方式标准化?对于我想解决的问题,我是不是使用了错误的模型?“准确性”到底是什么意思? 提前谢谢你的帮助,我是神经网络的新手,已经被这个问题困扰了好几天了。你知道吗


Tags: 数据函数模型网络model神经网络标签outputs
1条回答
网友
1楼 · 发布于 2024-04-26 21:00:31

这条线出了问题

outputs = Dense(n, activation='softmax')(hidden)

我们只在分类问题中使用softmax激活,在分类问题中我们需要一个类的概率分布作为网络的输出。因此softmax makes确保输出和为1且不为零(这在您的情况中是正确的)。但我不认为你手头的问题是一个分类任务,你只是试图预测10个连续的目标变量,所以用linear激活函数代替。所以把上面这行改成这样

outputs = Dense(n, activation='linear')(hidden)

希望这有帮助!你知道吗

相关问题 更多 >