如何解决“对于输入形状为[],[3]的'MatMul_4'(操作:'MatMul'),hape必须为2级,但为0级。”

时间:2019-04-27 03:44:41

标签: python tensorflow regression

我正在尝试为.csv文件中的数据集创建回归模型,但出现错误

  

hape必须为2级,但对于'MatMul_4'(op:'MatMul'),其hape必须为0级   输入形状:[],[3]。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import tensorflow as tf

#importing data
dataset = pd.read_csv('Salary_Data.csv')
x_data = dataset.iloc[:,0].values
y_data = dataset.iloc[:,1].values

#split data into train and test
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test =train_test_split(x_data, y_data, test_size = 0.3, random_state = 0, shuffle = True)


#regression using TF

m = tf.Variable(0.45, dtype= tf.float64)
b = tf.Variable(0.15, dtype= tf.float64)

batchsize = 3

xph = tf.placeholder(tf.float64,[batchsize])
yph = tf.placeholder(tf.float64,[batchsize])

y_model = tf.add(tf.matmul(m, xph), b)

error = tf.reduce_mean(tf.square(yph - y_model))

optimizer = tf.train.GradientDescentOptimizer(learning_rate= 0.001)
train = optimizer.minimize(error)

init = tf.global_variables_initializer()

#session
with tf.Session() as sess:
    sess.run(init)

    batches = 7

    for i in range(batches):
        ranid = np.random.randint(len(x_train),size = batchsize)
        feed = {xph:x_train[ranid],yph:y_train[ranid]}
        sess.run(train,feed_dict = feed)

    teta1, teta0 = sess.run([m,b])



plt.scatter(x_train, y_train, color = 'red')

我也尝试使用运算符直接相乘,但是出现相同的错误

1 个答案:

答案 0 :(得分:0)

m只是一个标量变量,因此您无法对其进行矩阵乘法。您说直接相乘无效,但对我来说似乎很好:

y_model = m*xph + b