当前位置: 首页 > 面试题库 >

了解Tensorflow LSTM输入形状

习华灿
2023-03-14
问题内容

我有一个由 N = 4000个样本 组成的数据集X ,每个样本都包含 d = 2个特征 (连续值),这些特征跨越 t =
10个时间步长
。在时间步骤11,我还具有每个样本的相应“标签”,它们也是连续值。

目前,我的数据集的形状为X:[4000,20],Y:[4000]。

给定d个功能的10个先前输入,我想使用TensorFlow训练LSTM来预测Y值(回归),但是我在TensorFlow中实现这一点很困难。

我目前遇到的主要问题是了解TensorFlow如何期望输入被格式化。我见过各种各样的例子,如本,但这些例子处理连续时间序列数据的一个大的字符串。我的数据是不同的样本,每个样本都是独立的时间序列。


问题答案:

该的文件tf.nn.dynamic_rnn中指出:

inputs:RNN输入。如果是time_major == False(默认值),则它必须是shape:的张量[batch_size, max_time, ...],或此类元素的嵌套元组。

在您的情况下,这意味着输入的形状应为[batch_size, 10, 2]。无需一次训练所有4000个序列,而是batch_size在每次训练迭代中仅使用其中的许多序列。类似于以下内容的东西应该起作用(为清楚起见,添加了重新塑形):

batch_size = 32
# batch_size sequences of length 10 with 2 values for each timestep
input = get_batch(X, batch_size).reshape([batch_size, 10, 2])
# Create LSTM cell with state size 256. Could also use GRUCell, ...
# Note: state_is_tuple=False is deprecated;
# the option might be completely removed in the future
cell = tf.nn.rnn_cell.LSTMCell(256, state_is_tuple=True)
outputs, state = tf.nn.dynamic_rnn(cell,
                                   input,
                                   sequence_length=[10]*batch_size,
                                   dtype=tf.float32)

从文档开始,outputs将具有形状[batch_size, 10, 256],即每个时间步长一个256输出。state将是一个形状的元组[batch_size, 256]。您可以据此预测最终值(每个序列一个):

predictions = tf.contrib.layers.fully_connected(state.h,
                                                num_outputs=1,
                                                activation_fn=None)
loss = get_loss(get_batch(Y).reshape([batch_size, 1]), predictions)

形状为outputs和的数字256statecell.output_size和决定。cell.state_size。在创建LSTMCell上述内容时,它们是相同的。另请参阅LSTMCell文档。



 类似资料:
  • 我正在尝试创建一维卷积模型,但我似乎无法获得正确的输入形状。以下是我所拥有的: 我收到以下错误: 有人有什么建议吗?

  • 我正在使用Keras构建一个CNN,以下Conv1D是我的第一层: 我正在培训以下功能: 其中,train\u df是一个由两列组成的pandas数据帧,其中,对于每一行,标签是一个int(0或1),有效载荷是一个用零填充/截断为1000的浮点数组。train\U df中的培训示例总数为15641。 模型编译,但在训练期间,我得到这个错误: 我看了这篇文章,试图将输入更改为1000个浮点长列表的数

  • 我是机器学习的初学者。虽然,这个问题类似于1,2,3,但我在为我的数据选择输入形状时真的很困惑。我在时间序列数据上使用1-D CNN。数据的维度是(6400,4)。有4个特征(列),其中一个是目标变量。拆分后: 我在为CNN选择输入形状时感到困惑。这就是我所尝试的(我一直保持输入shape=c(3,1)): 这执行得很好,但我不确定它是否正确。请告诉我这是否是设置输入形状的正确方法。

  • 我是新来的,所以任何帮助都是值得的,这段代码是我的教授给我的,当我问一个例子,我希望有一个工作模型。。。 读取数据 将行走状态定义为0,运行状态定义为1 随机选取50%的数据作为测试数据,其余数据作为列车数据 使用skLearning选择50%的功能 应用支持向量机算法 回溯(最近一次调用):文件“”,第1行,在execfile exec(compile(f.read)()第89行的文件“C:\U

  • 我做了很多研究,但没有找到关于这个问题的任何东西。我也不再有一个起点来寻找哪些关键字。 我关心的是创建一个如图中所示的输入字段。用户应该可以在这里简单地输入一个数字代码。 应该有一个图书馆吗?