2017-10-05 4 views
0

でプレースホルダテンソル「プレースホルダ」の値を養う必要がありますが、私のコードです:ここではInvalidArgumentError(トレースバックについては上記参照):あなたがここにDTYPEフロート

import numpy as np 
import tensorflow as tf 

input_dim=8 
layer1_dim=6 

learning_rate=0.01 

train_data=np.loadtxt("data.txt",dtype=float) 
train_target=train_data[:,-1] 
train_feature=train_data[:,0:-1] 
test_data=np.loadtxt("data.txt",dtype=float) 
test_target=test_data[:,-1] 
test_feature=test_data[:,0:-1] 


x=tf.placeholder(tf.float32) 
y=tf.placeholder(tf.float32) 

w1=tf.Variable(tf.random_normal([input_dim,layer1_dim])) 


b1=tf.Variable(tf.random_normal([1,layer1_dim])) 


layer_1 = tf.nn.tanh(tf.add(tf.matmul(x, w1), b1)) 


loss=tf.reduce_mean(tf.square(layer_1-y)) 

train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss) 

init = tf.global_variables_initializer() 

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

    for i in range(10): 
     print(session.run(train_op, feed_dict={x: train_feature, y: train_target})) 
     print(layer_1) 
     print(loss.eval()) 

は私のエラーです:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder' with dtype float 
[[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=<unknown>, _device="/job:localhost/replica:0/task:0/cpu:0"]()]] 

プロセス終了コード1で終了しました。

データは通常の行列です。これは6x8フィーチャと6x1ターゲットです。 sess.runの印刷はNoneです。 損失を印刷しない場合、エラーはありませんが、sess.runはありません。

+0

プレースホルダ宣言でディメンションを指定するとどうなりますか? – IanTimmis

+0

テンソル 'Placeholder_1:0'の形状( '、1)'の形の値を入力できません – user6876743

+0

(6,1)から(6,1)への値を試してみてください – IanTimmis

答えて

0

入力が実際に必要な場合は、入力を再確認する必要があります。次のスニペットが機能します。

import numpy as np 
import tensorflow as tf 

input_dim = 8 
layer1_dim = 6 
learning_rate = 0.01 

train_data = np.random.randn(6, 9).astype(np.float32) 
train_target = np.expand_dims(train_data[:, -1], axis=-1) 
train_feature = train_data[:, 0:-1] 

assert train_feature.dtype == np.float32 
assert train_target.dtype == np.float32 
assert train_feature.shape == (6, 8) 
assert train_target.shape == (6, 1) 


x = tf.placeholder(tf.float32, name='plhdr_X') 
y = tf.placeholder(tf.float32, name='pldhr_Y') 

w1 = tf.Variable(tf.random_normal([input_dim, layer1_dim])) 
b1 = tf.Variable(tf.random_normal([1, layer1_dim])) 

layer_1 = tf.nn.tanh(tf.add(tf.matmul(x, w1), b1)) 
loss = tf.reduce_mean(tf.square(layer_1 - y)) 

train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss) 

init = tf.global_variables_initializer() 

with tf.Session() as session: 
    session.run(init) 
    for i in range(10): 
     _, err = session.run([train_op, loss], feed_dict={ 
          x: train_feature, y: train_target}) 
     print err 

各プレースホルダに名前を付けると、より詳細な情報が得られます。

関連する問題