Machine learning LSTM张量形状与超参数张量流

Machine learning LSTM张量形状与超参数张量流,machine-learning,tensorflow,deep-learning,lstm,recurrent-neural-network,Machine Learning,Tensorflow,Deep Learning,Lstm,Recurrent Neural Network,我正在学习如何使用LSTM RNN。 我看了这个教程: 在那之后,我试着应用我所学到的知识并改变数据集。 问题是,我有点迷茫所有的重塑,我真的不知道如何使用它们,为什么他们在这里。。。 我的数据集有7列546行。 这是我的超参数 # hyperparameters lr = 0.001 training_iters = 100000 batch_size = 64 n_inputs = 7 # columns n_steps = 546 # rows n_hidden_units = 1

我正在学习如何使用LSTM RNN。 我看了这个教程: 在那之后,我试着应用我所学到的知识并改变数据集。 问题是,我有点迷茫所有的重塑,我真的不知道如何使用它们,为什么他们在这里。。。 我的数据集有7列546行。 这是我的超参数

# hyperparameters
lr = 0.001
training_iters = 100000
batch_size = 64

n_inputs = 7   # columns
n_steps = 546  # rows
n_hidden_units = 128   # neurons in hidden layer
n_classes = 1  # class
当我启动会话时,它如下所示:

with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    step = 0
    while step * batch_size < training_iters:
        batch_xs, batch_ys = inputX, inputY
        batch_xs = batch_xs.reshape([batch_size, n_steps, n_inputs])
        sess.run([train_op], feed_dict={
            x: batch_xs,
            y: batch_ys,
        })
        if step % 20 == 0:
            print(sess.run(accuracy, feed_dict={
            x: batch_xs,
            y: batch_ys,
            }))
        step += 1
将tf.Session()作为sess的
:
init=tf.global_variables_initializer()
sess.run(初始化)
步长=0
步骤*批量大小<培训内容:
批次X,批次Y=输入X,输入Y
batch_xs=batch_xs.重塑([批次大小,n_步数,n_输入])
分段运行([列车运行],进站指令={
x:batch_xs,
y:批次y,
})
如果步骤%20==0:
打印(sess.run)(精度、进给量)={
x:batch_xs,
y:批次y,
}))
步骤+=1
然后,我收到一条错误消息

无法将大小为3822的数组重塑为形状(64546,7)

如果有人能向我解释这是如何工作和/或如何解决问题,那就太好了


谢谢

LSTM单元有输入,并且LSTM单元会随着时间的推移展开,以用于一个序列的不同输入。由于我们使用批学习算法,我们需要提供一批输入。因此,tesorflow中的LSTM输入具有一定的形状(批次大小X展开的时间步长X输入大小)

就你而言

  • 批量大小=64
  • 展开步骤的次数=546
  • 输入大小=7
  • 根据您的输入方式(您是如何进行特征提取的),您必须将其重塑为64 X 546 X 7(=244608),若您的输入大小为3822,则这当然会失败

    从序列到序列预测(一对一模型)考虑LSTM。例如,让我们假设你有一个句子列表(让我们说S个句子)。假设你在每个句子中都有W个单词。现在,您要预测每个句子中每个单词的词性标记。假设您将每个单词表示为热单编码,并且您的词汇表大小为V。所以热单编码向量的大小将为V


    现在,您的LSTM模型输入形状将是(批次大小X W X V),其中批次大小为LSTM单元格有输入,并且LSTM单元格将随着时间的推移展开,用于一个序列的不同输入。由于我们使用批学习算法,我们需要提供一批输入。因此,tesorflow中的LSTM输入具有一定的形状(批次大小X展开的时间步长X输入大小)

    就你而言

  • 批量大小=64
  • 展开步骤的次数=546
  • 输入大小=7
  • 根据您的输入方式(您是如何进行特征提取的),您必须将其重塑为64 X 546 X 7(=244608),若您的输入大小为3822,则这当然会失败

    从序列到序列预测(一对一模型)考虑LSTM。例如,让我们假设你有一个句子列表(让我们说S个句子)。假设你在每个句子中都有W个单词。现在,您要预测每个句子中每个单词的词性标记。假设您将每个单词表示为热单编码,并且您的词汇表大小为V。所以热单编码向量的大小将为V


    现在,您的LSTM模型输入形状将是(批次大小X W X V),其中批次大小是为什么不打印张量形状以查看其尺寸?输入应该是
    [批次大小、时间步长、样本大小]
    。在您的数据集中,我假设每一行都有一个长度为7的序列数据。因此,选择N行作为您的
    batch\u size
    time\u steps
    是7,如果每个样本的
    一个热
    编码向量将是
    sample\u dim
    ,那么,我的批大小是x:(546,7)和y:(546,1)。我的功能不是一个热门功能,因此如果我理解,我将没有示例尺寸参数?为什么不打印张量形状以查看其尺寸?输入应为
    [批次尺寸、时间步长、示例尺寸]
    。在您的数据集中,我假设每一行都有一个长度为7的序列数据。因此,选择N行作为您的
    batch\u size
    time\u steps
    是7,如果每个样本的
    一个热
    编码向量将是
    sample\u dim
    ,那么,我的批大小是x:(546,7)和y:(546,1)。我的功能不是一个热门的,所以如果我理解的话,我就不会有一个示例dim参数了?谢谢你的回复,我现在更好地理解了!谢谢你的回复,我现在更明白了!