Каким должен быть размер ввода и скрытого состояния в GRUCell tenorflow (python)?

Я новичок в tensorflow (1 день опыта).

Я пытаюсь выполнить небольшой код для создания простой RNN на основе GRU с одним слоем и скрытым размером 100 следующим образом:

import pickle
import numpy as np
import pandas as pd
import tensorflow as tf

# parameters
batch_size = 50
hidden_size = 100

# create network graph
input_data = tf.placeholder(tf.int32, [batch_size])
output_data = tf.placeholder(tf.int32, [batch_size])

cell = tf.nn.rnn_cell.GRUCell(hidden_size)

initial_state = cell.zero_state(batch_size, tf.float32)

hidden_state = initial_state

output_of_cell, hidden_state = cell(input_data, hidden_state)

Но я получаю следующую ошибку для последней строки (т.е. вызов cell())

Linear is expecting 2D arguments: [[50], [50, 100]]

Что я делаю неправильно?


person exAres    schedule 06.07.2016    source источник


Ответы (1)


Ожидается, что входные данные для оператора вызова GRUCell будут двумерными тензорами с типом tf.float32. Следующее должно работать:

input_data = tf.placeholder(tf.float32, [batch_size, input_size])

cell = tf.nn.rnn_cell.GRUCell(hidden_size)

initial_state = cell.zero_state(batch_size, tf.float32)

hidden_state = initial_state

output_of_cell, hidden_state = cell(input_data, hidden_state)
person keveman    schedule 06.07.2016
comment
Фактически использование input_data = tf.placeholder(tf.float32, [batch_size, 1]) сработало. Затем мне пришлось преобразовать мои входные данные из массива длины 50 в матрицу 50X1. - person exAres; 06.07.2016
comment
Отредактировано для учетной записи input_size. Да, в общем, ваш входной вектор может иметь произвольный размер. - person keveman; 06.07.2016
comment
Спасибо! Думаю, ты сможешь мне помочь и дальше. Не могли бы вы взглянуть на: stackoverflow.com/questions/38233056/ - person exAres; 06.07.2016