ValueError: форма должна иметь ранг 2, но ранг 1 для 'MatMul' - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь запустить модель линейной регрессии с помощью TensorFlow. Я привел код ниже. Однако я получил сообщение об ошибке: ValueError: Shape должен иметь ранг не ниже 2, но имеет ранг 1 для 'model_19 / MatMul' (op: 'BatchMatMulV2') с входными формами: [1],?.

Из-за ошибки кажется, что вход в функцию model_linear создает проблему. Мы будем очень признательны за любые предложения по устранению ошибки.

import tensorflow as tf
x_train = [1.0, 2.0, 3.0, 4.0]
y_train = [1.5, 3.5, 5.5, 7.5]

def model_linear(x, y):
    with tf.variable_scope('model', reuse=tf.AUTO_REUSE):
        W = tf.get_variable("W", initializer=tf.constant([0.1]))
        b = tf.get_variable("b", initializer=tf.constant([0.0]))       
        output = tf.matmul(W, x) + b
        loss = tf.reduce_sum(tf.square(output - y))
    return loss

optimizer = tf.train.GradientDescentOptimizer(0.01)

with tf.Session():
    tf.global_variables_initializer().run()    
    x = tf.placeholder(tf.float32)
    y = tf.placeholder(tf.float32)
    loss = model_linear(x, y)
    train = optimizer.minimize(loss)

    for i in range(1000):
        train.run(feed_dict = {x:x_train, y:y_train})

1 Ответ

0 голосов
/ 08 мая 2020

tf.matmul ожидает тензоры ранга 2, т. Е. Матрицы. Вместо этого у вас есть плоские векторы. Попробуйте x.reshape(-1,1) или x.expand_dims(0). И, похоже, вам это также нужно для вашей матрицы веса.

...