我一直在尝试使用tensorflow的tf.estimator
,但我在输入/输出数据的形状方面遇到以下错误。
ValueError:尺寸大小必须可被9整除,但为12 具有输入形状的'linear / linear_model / x / Reshape'(op:'Reshape'): [4,3],[2]和输入张量计算为部分形状:输入[1] = [?,9]。
以下是代码:
data_size = 3
iterations = 10
learn_rate = 0.005
# generate test data
input = np.random.rand(data_size,3)
output = np.dot(input, [2, 3 ,7]) + 4
output = np.transpose([output])
feature_columns = [tf.feature_column.numeric_column("x", shape=(data_size, 3))]
estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)
input_fn = tf.estimator.inputs.numpy_input_fn({"x":input}, output, batch_size=4, num_epochs=None, shuffle=True)
estimator.train(input_fn=input_fn, steps=iterations)
输入数据形状为shape=(3, 3)
:
[[ 0.06525168 0.3171153 0.61675511]
[ 0.35166298 0.71816544 0.62770994]
[ 0.77846666 0.20930611 0.1710842 ]]
输出数据形状为shape=(3, 1)
[[ 9.399135 ]
[ 11.25179188]
[ 7.38244104]]
我感觉它与input
数据,output
数据和batch_size
有关,因为当input
数据更改为1行时,它可以正常工作。如果input
数据行数等于batch_size
(data_size = 10
和batch_size=10
),则会引发其他错误:
ValueError:形状(1,1)和(10,1)不兼容
非常感谢任何有关错误的帮助。