Оценка RNNs с помощью библиотеки наборов данных в Tensorflow - PullRequest
0 голосов
/ 24 августа 2018

У меня проблема с оценкой RNN с использованием API набора данных Tensorflow.

По сути, когда вы используете API набора данных, я не использую feed_dict и заполнители, формулирующие RNN.

Но я продолжаю получать сообщения об ошибках.

Итак, программа выглядит следующим образом:

# creating numpy arrays out of my data 
data_x = np.array(x_state,dtype=np.float32)
data_y = np.array(y_var,dtype=np.float32)


num_epochs = 1
num_batch = 80

# from Numpy arrays to Tensors
x_t = tf.convert_to_tensor(data_x, np.float32)
y_t = tf.convert_to_tensor(data_y, np.float32)

# merge the two data sets
dataset = tf.data.Dataset.from_tensor_slices((x_t,y_t))

# batches
dataset = dataset.batch(num_batch)

# repeat the dataset by number of epochs
dataset = dataset.repeat(num_epochs)


sess = tf.Session()

# one-shot iterator
iterator = dataset.make_one_shot_iterator()
x,y = iterator.get_next()

n_steps = num_batch
n_inputs = 1
n_neurons = 100
n_outputs = 1

cell = tf.contrib.rnn.OutputProjectionWrapper(
    tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu),
    output_size=n_outputs)
outputs, states = tf.nn.dynamic_rnn(cell,x, dtype=tf.float32)



learning_rate = 0.001

loss = tf.reduce_mean(tf.square(outputs - y)) # MSE
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
training_op = optimizer.minimize(loss)

init = tf.global_variables_initializer()



with tf.Session() as sess:
    init.run()
    for i in range(num_epochs):
        _, loss_value = sess.run([training_op, loss])
        print("Epoch: {}, Loss: {:.4f}".format(i, loss_value))

Tensorflow недоволен измерением переменной x, исходящей из одноразового итератора.Я получаю следующую ошибку:

ValueError: Shape (1,?) Должен иметь ранг не менее 3

Я передаю одну переменную x, размер которой равен размеру пакета.А Tensorflow не радует, интересно почему?

Заранее спасибо.Br.

...