Skip to main content
 首页 » 编程设计

python之凯拉斯输入/输出

2025年05月04日26sky-heaven

我正在努力应对 Tensorflow/keras 的挑战,如果有人能帮助我,那就太好了。

我在 Keras 中构建了一个神经网络,其中 input_dim=3,然后是 10 个神经元和输出 1。

输入是一个带有 float 的 3d 向量,输出应该是一个简单的浮点值。

我的问题是,我不知道 float 应该如何格式化(>1,从 0 到 1?等等)以及哪个损失函数可以解决这个任务(我猜不是二进制)。我希望神经网络从 3d 向量中计算出一个简单的浮点值。但它永远不会成功,因为我的输出总是一样的。

如果我忘记了什么,请告诉我,如果您对此有一些想法,那就太好了!

问候

编辑:我知道我需要介绍整个机器学习主题,我现在正在做这件事。与此同时,我想知道如何使用 keras 来验证/实际使用机器学习。很抱歉提出“愚蠢”的问题,但我希望有人可以帮助我。

输入:我认为输入的格式可能“错误”,未规范化等,但我将获得的值转换为下面提到的间隔。

这是我的简单模型:

model = Sequential() 
model.add(Dense(10, input_dim=3, init='normal', activation='sigmoid')) 
model.add(Dense(1, init='normal', activation='sigmoid')) 
model.compile(loss='mse', optimizer='sgd', metrics=['accuracy']) 
model.fit(X_Train, Y_Train, nb_epoch=100, batch_size=32, verbose=1) 

X_Train 和 Y_Train 是从 .csv 文件中提取的值。例如,我的输入值为 [a,b,c,d],其中 0 < a,b,c < 1 和 -1 < d < 1(d 是输出)。

输出:

Epoch 500/500

32/32 [==============================] - 0s - loss: 0.0813 - acc: 0.0000e+00

示例(随机生成的值),所有输出在 0.43 左右几乎相同:

[ 0.97650245 0.30383579 0.74829968] [[ 0.43473071]]

[ 0.94985165 0.75347051 0.72609185] [[ 0.43473399]]

[ 0.18072594 0.18540003 0.20763266] [[ 0.43947196]]

请您参考如下方法:

首先,不需要规范化(或格式化)输入样本。

其次,对于零准确率的问题,这是因为您使用“准确率”作为用于分类模型的指标。在您的情况下,您应该在编译方法中使用类似“mse”或“mae”(在 Keras 中)的指标,例如,

model.compile(loss='mse', optimizer='sgd', metrics=['mae'])