2017-08-15 9 views
0

私はTFで時系列モデルを使用しています。これは基本的に単純な自己回帰モデルです。TF:フェッチ引数xに無効な型があります。<type 'numpy.float32'>は文字列またはテンソルでなければなりません。 (float32をTensorやOperationに変換できません)

オリジナルyは、長さ100のベクターです(n)。

フロートはテンソルエラーではありません(件名ごと)。私はそれだけで2番目のインスタンスでそれを取得します。

LR = .01 
STEPS = 100 

def Net(x, w, b): 
    # x has 2 previous values 
    x = [x[-1], x[-2], x[-1] - x[-2]] 
    x = tf.reshape(x, [1, 3]) 
    x = tf.add(tf.matmul(x, w[0]), b[0]) 
    pred = tf.add(tf.matmul(x, w[1]), b[1]) 
    return pred 

y_data = y - np.mean(y) 

x = tf.placeholder(tf.float32, [2], name='x') 
y = tf.placeholder(tf.float32, [1], name='y') 
w = [tf.Variable(tf.random_normal([3, 3])), tf.Variable(tf.random_normal([3, 1]))] 
b = [tf.Variable(tf.random_normal([1])), tf.Variable(tf.random_normal([1]))] 
pred = Net(x, w, b) 
cost = tf.sqrt(tf.reduce_mean(tf.square(tf.subtract(pred, y)))) 
optimizer = tf.train.AdamOptimizer(learning_rate=LR).minimize(cost) 

init = tf.global_variables_initializer() 
with tf.Session() as sess: 
    sess.run(init) 
    for step in range(STEPS): 
    # random samples of data 
    ts = np.random.choice(np.arange(2, n), int(n * .5), replace=False) 
    for t in ts: 
     x_data = [y_data[t - 2], y_data[t - 1]] 
     y_data_cur = [y_data[t]] 
     print(x_data, y_data_cur, x, y, pred) 
     _, cost, p = sess.run([optimizer, cost, pred], feed_dict={x: x_data, y: y_data_cur}) 
     print(cost, p) 
    if step % 10 == 0: 
     print(step, cost) 
+0

この行にエラーがあります。 'y_data = y - np.mean(y)'です。このエラーは非常にわかりやすいものです。 –

+0

これは完全なコードではなく、shape [100] fistのランダムな法線として 'y'を生成します。 –

答えて

2

あなたのモデルを実行する場合:次の繰り返しに失敗したので、

_, cost, p = sess.run([optimizer, cost, pred], feed_dict={x: x_data, y: y_data_cur}) 

あなたは、その評価値で、コストのためTensorFlowテンソルを保持するために使用cost変数を、上書きされます。ただ、変数の名前変更:

_, cost_val, p = sess.run([optimizer, cost, pred], feed_dict={x: x_data, y: y_data_cur}) 

をそしてもちろんprint文でcost_valcostを交換してください。

+0

もちろん、ありがとう –

関連する問題