2017-07-11 3 views
-1

によって10個の数字から2次元の出力がtは、私は私が何をしたい10個の数字</p> <p>から1つの数を予測したいtensorflow

matから各 mat[i]はうち t[i]

にcorrspondingされる予測である予測しますコース私はマットとtで5列以上を持っていますが、今問題を単純化しています。

私は以下のようなコードを書いています。

#There is target data `t` and traindata `mat[0]`,`mat[1]`,`mat[2]`.... 

t = [0,1,0,1,0] #answer 2 dimension 

limit = 10# number of degrees 
mat = [[2,-2,3,-4,2,2,3,5,3,6], #10 degrees number of mat[0] leads t[0] 
[1,3,-3,2,2,5,1,3,2,3], #10 degrees number of mat[1] leads t[1] 
[-2,3,2,-2,2,-2,1,3,4,5], #10 degrees number of mat[2] leads t[2] 
[-2,2,-1,-2,2,-2,7,3,9,2], #10 degrees number of mat[3] leads t[3] 
[-2,-3,2,-2,2,-4,1,-4,4,5], #10 degrees number of mat[4] leads t[4] 
] 

x = tf.placeholder(tf.float32,[None,10]) 
w = tf.Variable(tf.zeros([10,5])) 
y = tf.matmul(x,w) 
t = tf.placeholder(tf.float32,[None,1]) 

loss = tf.reduce_sum(tf.square(y-t)) 

train_step = tf.train.AdamOptimizer().minimize(loss) 
sess = tf.Session() 
sess.run(tf.initialize_all_variables()) 

train_t = np.array(mat) 
train_t = train_t.reshape([limit,5]) 
train_x = np.zeros([limit,5]) 

# initialize 
for row, num in enumerate(range(1,limit + 1)): 
    for col, n in enumerate(range(0,5)): 
     train_x[row][col] = num**n 

i = 0 
for _ in range(100000): 
    i += 1 
    sess.run(train_step,feed_dict={x:train_x,t:train_t}) 
    if i % 10000 == 0: 
     loss_val = sess.run(loss,feed_dict={x:train_x,t:train_t}) 
     print('step : %d,Loss: %f' % (i,loss_val)) 
     w_val = sess.run(w) 
     pprint("w_val") 
     pprint(w_val) 

しかし、この問題はあなたのプレースホルダの形状や、あなたの入力の形状が一致しないということである。この

Traceback (most recent call last): 
    File "wisdom2.py", line 60, in <module> 
    sess.run(train_step,feed_dict={x:train_x,t:train_t}) 
    File "/Users/whitebear/tensorflow/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 789, in run 
    run_metadata_ptr) 
    File "/Users/whitebear/tensorflow/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 975, in _run 
    % (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape()))) 
ValueError: Cannot feed value of shape (10, 5) for Tensor 'Placeholder:0', which has shape '(?, 10)' 

答えて

1

のようなエラーが表示されます。プレースホルダーxは、N行と10列の値を想定していますが、train_xは10行と5列です。同様に、tN行と1列を持つ必要がありますが、渡された値train_tは10行と5列を持ちます。プレースホルダの形状や入力の形状を変更する必要があります。

関連する問題