2016-05-31 167 views
1

我對tensorflow很新穎。我用tensorflow做了線性迴歸。 當我跑下面的代碼時,我得到了類似於這樣的錯誤:。 'Op的類型float64與參數的類型float32不匹配

TypeError:'Mul'的輸入'y'Op的類型float64與參數'x'的類型float32不匹配。

用了幾個小時,但找不到原因。 它出錯了?非常感謝幫助。非常感謝。

import tensorflow as tf 
import numpy as np 

training_epoch = 1000 
display_epoch=50 
learning_rate = 0.01 
train_X = np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167, 
         7.042,10.791,5.313,7.997,5.654,9.27,3.1]) 
train_Y = np.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221, 
         2.827,3.465,1.65,2.904,2.42,2.94,1.3]) 
n_samples = train_X.shape[0] 
X = tf.placeholder('float') 
Y= tf.placeholder ('float') 
w = tf.Variable(np.random.randn(2)) 
pred = tf.add(tf.mul(X,w[0]), w[1]) 

loss = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) 
init = tf.initialize_all_variables() 
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss) 

with tf.Session() as session: 
    session.run(init) 
    for epoch in range(training_epoch): 
     for x, y in zip(train_X, train_Y): 
      session.run(optimizer, feed_dict={X:x, Y:y}) 
     if (epoch+1) % display_epoch == 0: 
      weight = session.run(w) 
      bias = session.run(b) 
      cost = session.run(loss, feed_dict={X:train_X, Y:train_Y}) 
      print('epoch: {0:.2f}, weight: {1:.9f}. bias: {2:.9f}, cost: {3:.9f}'.format(epoch+1,weight[0], weight[1], cost)) 
    print('optimization complete') 

回答

2

TL; DR:佔位符X和可變w具有不同的元件類型,以及TensorFlow不會自動投運算參數,所以tf.mul()運算失敗。

你的佔位符X具有類型tf.float32,因爲它被定義爲具有D型細胞'float',其被定義爲是指「32位浮點」,在這一行:

X = tf.placeholder('float') 

你的可變w具有類型tf.float64因爲它是從np.random.randn(2),其具有np.float64一個D型細胞初始化,在此行:

w = tf.Variable(np.random.randn(2)) 

的最簡單的解決方案是定義w具有tf.float32類型:

w = tf.Variable(np.random.randn(2).astype(np.float32)) 

或者,你可以定義X具有tf.float64類型:

X = tf.placeholder(tf.float64) 

還有一個tf.cast()運作出明確的轉換,但我不會」建議使用它,因爲它不可區分,因此可能會干擾計算梯度。


PS。更慣用的方式做這將是使用tf.random_normal()運算,從而避免將大常數圖:

w = tf.Variable(tf.random_normal([2])) 

雖然沒有多大意義的小變量(如2元矢量這裏)對於更大的重量矩陣來說,它變得更重要。

+0

非常感謝您的詳細解釋! – zesla

相關問題