Несовместимые формы между операционным вводом и вычисленным входным градиентом: conv1d_transpose - PullRequest
0 голосов
/ 24 ноября 2018

У меня следующая ошибка при вычислении градиента.

ValueError: Несовместимые формы между операционным входом и вычисленным входным градиентом.Операция пересылки: write_8 / conv1d_transpose.Индекс ввода: 2. Исходная форма ввода: (100, 1, 10, 10, 100).Вычисляемая форма входного градиента: (100, 1, 13, 10)

def conv1d_layer(inp, filters, stride, output_shape=None, transpose=False):
    if output_shape is not None:
    output_shape = tf.constant(output_shape)
    if transpose: return tf.contrib.nn.conv1d_transpose(inp,
        filters, output_shape, stride, padding='SAME')
return tf.nn.conv1d(inp, filters, stride, 'SAME')

def forward(input, batch_size=100):
    output = tf.reshape(output, [-1, 10, 10, 100])
    init = tf.truncated_normal_initializer(stddev=1.)
    filter = tf.get_variable('f1', [5, 1, 10], initializer=init)
    output = conv1d_layer(output, filter, 2, [batch_size, 25, 25], True)
    filter = tf.get_variable('f2', [5, 1, 25], initializer=init)
    output = conv1d_layer(output, filter, 2, [batch_size, 50, 50], True)
    filter = tf.get_variable('f3', [5, 1, 50], initializer=init)
    out = conv1d_layer(output, filter, 2, [batch_size, 100, 100], True)
    out = tf.reshape(out, [-1, 100 * 100])
    vocab_size = 10000
    w = tf.get_variable('w', [100*100, vocab_size], initializer=init)
    b = tf.Variable(tf.zeros([vocab_size])) # biases
    return tf.matmul(output, w) + b

Когда дан какой-то ввод, я делаю прямой переход, вызывая conv1d_layer.Затем, когда я вычисляю градиент следующим образом, возникает ошибка.

output = forward(input)
loss = tf.nn.softmax_cross_entropy_with_logits_v2(logits=output, labels=classes)
optimizer = tf.train.AdamOptimizer(lr, beta1=0.5)
grads = optimizer.compute_gradients(loss)

Я подозреваю, что мои фильтры неверны (я хочу получить окончательную форму [100, 100, vocab_size], где vocab_size = 10000как указано выше. Любая помощь будет принята с благодарностью.

...