无效的参数错误Tensorflow占位符

时间:2017-10-08 04:05:03

标签: python tensorflow artificial-intelligence

import tensorflow as tf
import numpy as np

sess = tf.InteractiveSession()

n_steps = 3                       # number of time steps in RNN
n_inputs = 1                      # number of inputs received by RNN Cell at each time step
n_neurons = 10                    # number of RNN cells in hidden layer
n_outputs = 3                     # number of outputs given out by RNN
n_layers = 3                      # number of layers in network
n_epochs = 1000                   # number of epochs for RNN training 

learning_rate = 0.01              # learning rate for training step

X_train = np.array([[[1.],       
                     [2.],
                     [3.]],
                    [[4.],        # training data for input sequence
                     [5.],
                     [6.]],
                    [[7.],
                     [8.],
                     [9.]]])

y_train = np.array([[4., 5., 6.],
                    [7., 8., 9.],              # training data for output sequence
                    [10., 11., 12.]])

X_train.reshape((3, 3, 1))                     # reshape X training data

X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])  # placeholder for input sequence
y = tf.placeholder(tf.float32, [None, n_outputs])          # placeholder for output sequence

basic_cell = tf.contrib.rnn.BasicRNNCell(num_units = n_neurons, reuse = 
True)                                                                     # create hidden layer of 10 basic RNN cells                               




outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype = tf.float32)          # create layer using basic RNN Cell and input sequence X using dynamic RNN method (get outputs and final state)

logits = tf.layers.dense(states, n_outputs)                            # logits (and final prediction) of RNN

prediction = logits                    # final prediction of RNN

rsme = tf.square(y - prediction)       # squared deviations of predictions form targets

loss = tf.reduce_mean(rmse)            # mean of all squared deviations (cost function)

training_op = tf.train.GradientDescentOptimizer(learning_rate = 
learning_rate).minimize(loss)          # training step using Gradient Descent Optimizer


tf.global_variables_initializer().run()

for _ in range(n_epochs):

    sess.run(training_op , feed_dict = {X: X_train, y: y_train})       # run training operation iteratively

在上面的代码中,我试图使用具有基本RNN单元的动态递归神经网络来预测给定前3个元素的序列的最后3个元素。它有一个带有3个神经元的输入层和一个包含10个递归神经元的隐藏层和一个包含3个神经元的输出层。但是,它给出了一个'无效的参数错误',说我正在向一个形状的占位符(?,3,1)提供负维(-1,3,1)的张量。即使经过大量绝望的谷歌搜索,我也无法解决这个错误。有人可以帮我修复这个错误。 在此先感谢您的帮助!

0 个答案:

没有答案