使用 Tensorflow 2 创建 RNN

提亚马特

我试图用 Python 和 Tensorflow 2a 创建一个 RNN,但我真的不确定我做了什么......预测结果是常数。您如何看待数据准备?

### Create the data ###
training_data =    [[1,2], [4,5], [7,8]...] # here, input_size = 2
training_targets = [3,     6,     9...]
predict_data =     [[9,10], [12,13], [15,16]...] # predictions should be [11, 14, 17...]

### Imports ###
import numpy as np
import tensorflow as tf
from tensorflow.python import keras as tfk

### Parameters ###
batch_size = 8
time_steps = 64

### Create the model ###
model = tfk.Sequential()
model.add(tfk.layers.Bidirectional(tfk.layers.LSTM(128, return_sequences=True, input_shape=(time_steps, input_size))))
model.add(tfk.layers.Bidirectional(tfk.layers.LSTM(64, return_sequences=True)))
model.add(tfk.layers.Dropout(rate=0.05))
model.add(tfk.layers.Dense(32, activation='relu'))
model.add(tfk.layers.Dense(1, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

### Create the training dataset ###
# Separate data in time steps
data = np.array([training_data[i: i + time_steps] for i in range(len(training_data) - time_steps)])
targets = np.array([training_targets[i: i + time_steps] for i in range(len(training_argets) - time_steps)])
# Create the tensors and dataset
data = tf.convert_to_tensor(data)
targets = tf.convert_to_tensor(targets)
dataset = tf.data.Dataset.from_tensor_slices((data, targets))
# Batch data, the data shape is : (batch_size, time_steps, input_size)
dataset = dataset.batch(batch_size)

### Train the model ###
model.fit(dataset, epochs=10, validation_data=validation_dataset, shuffle=False)

### Create the predict data ###
data = np.array([predict_data[i: i + time_steps] for i in range(len(predict_data) - time_steps)])
data = tf.convert_to_tensor(data)

### Try the model ###
results = model.predict(data, steps=time_steps)

预测应该是 [11, 14, 17 ...] 但它就像是恒定的,而且形状很奇怪:

[
[[1], [1], [1], [1] ...],
[[1], [1], [1], [1] ...],
...
]

谢谢你的帮助!

阿尔克斯菲

最后一层只有一个神经元。想想看。你的网络所能做的就是返回一个数字,但这个数字毫无意义,因为对于你的所有训练数据,它永远不知道你想要它做什么。问题是当它更适合作为回归问题时,您将其视为分类问题。取出最后一层的softmax,使用MSE作为损失度量。

此外,似乎只有 2 个时间步,但您的代码暗示有 64 个。这对我来说没有意义。

另外,你在哪里定义'input_size'。它不包含在上面的代码中。

多考虑一下这个问题,做出这些改变,希望它会奏效。我会尝试自己运行它,但我不想对您的训练数据和目标做出假设。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Tensorflow中创建高度可定制的RNN

来自分类Dev

在Tensorflow RNN中使用CSV训练数据

来自分类Dev

在Tensorflow中使用扫描功能制作简单的rnn代码

来自分类Dev

Tensorflow RNN输入大小

来自分类Dev

Tensorflow:RNN与char输入

来自分类Dev

Tensorflow RNN序列训练

来自分类Dev

Tensorflow 动态 RNN - 形状

来自分类Dev

Tensorflow RNN细胞权重共享

来自分类Dev

Tensorflow网格LSTM RNN TypeError

来自分类Dev

TensorFlow 动态 RNN 未训练

来自分类Dev

Tensorflow RNN 输出张量形状

来自分类Dev

Tensorflow强化学习RNN在使用GradientTape优化后返回NaN

来自分类Dev

在 Tensorflow 中使用 RNN 预测未来时间序列中的值

来自分类Dev

如何使用TensorFlow和python在MNIST数据上创建2层神经网络

来自分类Dev

如何使用TensorFlow创建循环变量

来自分类Dev

使用tensorflow创建图像的颜色直方图

来自分类Dev

在Windows中使用创建的Tensorflow CNN模型?

来自分类Dev

什么使用 tensorflow estimator 创建多输入

来自分类Dev

Tensorflow,在RNN中保存状态的最佳方法?

来自分类Dev

TensorFlow中的RNN模型内存不足

来自分类Dev

在Tensorflow RNN示例中从ID获取单词

来自分类Dev

通过rnn ValueError进行Tensorflow反向传播

来自分类Dev

Tensorflow RNN文本生成示例教程

来自分类Dev

在Tensorflow RNN示例中从ID获取单词

来自分类Dev

旧的TensorFlow RNN文件哪里去了?

来自分类Dev

Tensorflow RNN培训无法执行吗?

来自分类Dev

如何在 Tensorflow 上共享 RNN 的变量

来自分类Dev

如何在 TensorFlow RNN 中提供数据?

来自分类Dev

Tensorflow:从恢复的 RNN 中检索隐藏状态