使用Keras递归神经网络进行预测-精度始终为1.0

泰·帕维奇(Ty Pavicich)

TLDR:如何使用Keras RNN预测序列中的下一个值?


我有一个顺序值列表。我想将它们输入RNN以预测序列中的下一个值。

[ 0.43589744  0.44230769  0.49358974 ...,  0.71153846  0.70833333 0.69230769]

我正在使用Keras来做到这一点,并且可以使网络的损耗减少,但精度始终为1.0。错了 y_tests != model.predict(x_tests)

Epoch 0
1517/1517 [==============================] - 0s - loss: 0.0726 - acc: 1.0000 - val_loss: 0.0636 - val_acc: 1.0000
Epoch 1
1517/1517 [==============================] - 0s - loss: 0.0720 - acc: 1.0000 - val_loss: 0.0629 - val_acc: 1.0000
...

这是我的网络。

model = Sequential()
model.add(SimpleRNN(1, 100))
model.add(Dense(100, 1, activation = "sigmoid"))
model.compile(loss="mean_squared_error", optimizer = "sgd")

我尝试过SimpleRNN,GRU和LSTM,但是没有运气。这是数据格式化的方式。

# Current value
y_train = [[ 0.60576923] [ 0.64102564] [ 0.66025641] ..., [ 0.71153846] [ 0.70833333] [ 0.69230769]]

# Previous 10 values
x_train_10 = [
    [[ 0.65064103] [ 0.66346154] [ 0.66346154] ..., [ 0.72115385] [ 0.72435897] [ 0.71153846]] ...,
    [[ 0.66346154] [ 0.66346154] [ 0.67628205] ..., [ 0.72435897] [ 0.71153846] [ 0.70833333]]
]

# Previous value
x_train_1 = [[ 0.58333333] [ 0.60576923] [ 0.64102564] ...,  [ 0.72435897] [ 0.71153846] [ 0.70833333]]

# So here are the shapes...
y_train.shape    = (1895, 1)
x_train_10.shape = (1895, 10, 1)
x_train_1.shape  = (1895, 1)

中的每个元素x_train_10都是前10个值的列表。我按照Keras的文档格式进行了格式化,即循环图层采用shape的输入(nb_samples, timesteps, input_dim)

我也尝试过使用Embedding没有运气图层。(这可能是错误的使用方式-我只看到它用于分类而不是预测)。

model = Sequential()
model.add(Embedding(1, 30))
model.add(LSTM(30, 100))
...

pad_sequences 也没有用。

x_train_1 = sequence.pad_sequences(x_train_1, maxlen = None, dtype = "float32")

我想让RNN使用这种简单的数据/架构,以便以后将其用于更复杂的问题。

谢谢 :)

泰·帕维奇(Ty Pavicich)

在Keras Github页面发布了类似的问题,并得到了很好的答案。


lukedeo说,这acc: 1.0000意味着真实输出和预测输出均大于0.5,反之亦然。相反,我应该查看损失或mse,以确定模型的准确性。这是因为我的网络是一个回归,而不是分类器/集群。

均方根误差是准确性的良好度量。 accuracy_percent = 1 - np.sqrt(mse)


fcholletKeras的创造者)详细地说,“准确性与回归问题根本不相关”。

当执行分类问题,精度可以通过设置进行有关class_mode'categorical''binary'model.comple(...)根据目标(网络输出)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Keras神经网络模型精度始终为零

我的这个keras神经网络的准确度为0%

Tensorflow神经网络预测始终相同

使用 TensorFlow 和 Keras 的卷积神经网络精度低

Tensorflow 模型预测输出始终为 [0. 1.]

为什么训练时我的Keras模型的精度始终为0?

Keras多层神经网络精度

Python-使用带有Keras的LSTM递归神经网络进行模式预测

keras神经网络为每个手写数字预测相同的数字

什么激活函数适用于 Keras 回归神经网络的输入范围 (0,1) 和输出范围 (-∞,∞)

Keras中的神经网络预测_proba总是返回概率等于1

在使用keras的神经网络中精度非常低,并且验证精度为0.0000e + 00

TensorFlow:训练和测试集上的神经网络精度始终为100%

如何提高LSTM,GRU递归神经网络的分类精度

当使用具有单个输出神经元张量流的神经网络时,损失和准确性为0

人工神经网络从 1 到 5 预测输出

零精度训练Keras中的神经网络

神经网络可以学习| sin(x)| 为[0,pi]而不是[0,2pi]或[0,4pi]

为什么我的递归神经网络的损失为零?

为什么我的神经网络预测 -0(PYTHON - 反向传播 XOR)?

将神经网络输出钳位在0和1之间的简单方法?

调试不在内部的概率的神经网络丢失问题[0,1]

为什么我的MLP神经网络的输出在0和1之间?

如何设置神经网络使其输出只有 0 或 1?

如何在孪生神经网络中获得值 0 或 1?

使用Keras神经网络进行GridSearch

神经网络精度优化

在时间序列数据集上使用递归神经网络进行预测

递归神经网络,使用更新的Tensorflow 1.14进行时间序列预测