简体   繁体   中英

LSTM Input 0 of layer basic_lstm_cell_1 in tensorflow

I am working with lstm using tensor flow when I am running the code it is showing me the error. the code is running fine but when I am running the function tf.nn.dynamic_rnn(lstmCell, data, dtype=tf.float64) it is showing Value ERROR

import tensorflow as tf

wordsList = np.load('urduwords.npy')
wordVectors = np.load('urduwordsMatrix.npy')

batchSize = 24
lstmUnits = 64
numClasses = 2
iterations = 10000

tf.reset_default_graph()


labels = tf.placeholder(tf.float32, [batchSize, numClasses])
input_data = tf.placeholder(tf.int32, [batchSize, maxSeqLength])

print(labels)

data = tf.Variable(tf.zeros([batchSize, maxSeqLength, numDimensions]),dtype=tf.float32)
print(data)


data = tf.nn.embedding_lookup(wordVectors,input_data)
print(data)


lstmCell = tf.contrib.rnn.BasicLSTMCell(lstmUnits)
lstmCell = tf.contrib.rnn.DropoutWrapper(cell=lstmCell, output_keep_prob=0.1)

value, _ = tf.nn.dynamic_rnn(lstmCell, data, dtype=tf.float64)

How to resolve this error using tensor flow.

ValueError: Input 0 of layer basic_lstm_cell_1 is incompatible with the layer: expected ndim=2, found ndim=3. Full shape received: [24, 1, 2]

the shape of the input_data is

(24, 30, 1, 2)

and the shape of wordVector is

(24053, 1, 2)

Since you have not provided a standalone code to reproduce the bug, i have a sample working code as shown below:

VOCAB_SIZE = 128
HIDDEN_SIZE = 200

wordVectors = tf.Variable(tf.random_uniform([VOCAB_SIZE, HIDDEN_SIZE], -1, 1))

labels = tf.random_normal([batchSize, numClasses])
input_data = tf.random_uniform([batchSize, maxSeqLength], maxval=120, dtype=tf.int32)

data = tf.Variable(tf.zeros([batchSize, maxSeqLength, numDimensions]),dtype=tf.float32)

data = tf.nn.embedding_lookup(wordVectors,input_data)

lstmCell = tf.contrib.rnn.BasicLSTMCell(lstmUnits)
lstmCell = tf.contrib.rnn.DropoutWrapper(cell=lstmCell, output_keep_prob=0.1)

value, _ = tf.nn.dynamic_rnn(lstmCell, data, dtype=tf.float32)

I have changed the data type of tf.nn.dynamic_rnn to tf.float32 to fix the data type error.

the label shape is 4 dimension because of you feed the wrong type of data to tf,

please try to use NumberPy array or List

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM