2017-06-15 109 views
0

新來TensorFlow,現在我需要餵奶前佔位符使用的值,是這樣的:在tensorflow中,如何在餵食前使用佔位符的值?

tensor = tf.placeholder(tf.float32, [None, 3]) 
Mat_items = tf.Variable(tf.random_normal([10,10])) 
Mat_users = tf.Variable(tf.random_normal([10,10])) 
item_index = tensor[:, 0] 
user_index = tensor[:, 1] 
rating = tensor[:, 2] 
Val = Mat_items[item_index, :]-Mat_users[user_index, :] 

爲N行的佔位符3周的cols,第一欄和第二欄是指數Mat_items和Mat_users分別和Mat_itemsMat_users是需要被索引的變量。
運行它絕對會拋出一個錯誤,因爲item_index,user_index都是張量而不是數字餵養前。 所以我想知道Tensorflow是否可以實現這種需求? 任何建議將不勝感激:) :)

===================================== ==================================== 除了我的問題:
Val取決於某些列在Tensor就像第一列和第二列。所以,當我創建我的曲線,我的代碼

Val = Mat_items[item_index, :]-Mat_users[user_index, :] 

item_index和USER_INDEX是tensor片,兩者都是類型tensor too.It將拋出error.I不知道如何實現TensorFlow這種需求。

============================================== =========================== 找到了解決辦法:以上

tensor = tf.placeholder(tf.float32, [None, 3]) 
Mat_items = tf.Variable(tf.random_normal([10,10])) 
Mat_users = tf.Variable(tf.random_normal([10,10])) 
for each in range(batch_number): 
    item_ind, user_ind = tensor[each, 2], tensor[each, 1] 
    rating = tensor[each, 1] 
    Val = Mat_item[item_ind, 0]*Mat_user[user_ind, 0]*rating 

代碼似乎在構建圖冊成本工作即使使用litte數據集(批量大小約爲1000,並且只有一個批次需要測試),也會花費太多時間,構建圖形大約需要78秒,我不確定它是否正常?

回答

0

你的問題似乎很模糊,但我想你的問題是如何將值放入佔位符。如果您想從Val獲得輸出,則必須使用輸入來補充tensor,因爲它默認不包含任何值。 Val也取決於tensor以計算其輸出。您的輸入必須與tensor的尺寸相同。 (在這種情況下,讓我們假設你的輸入是隨機噪聲input_tensor = numpy.random.uniform(-1, 1, size =(None, 3))哪裏都不是必須指定的值。

所以,你開始會話之後,執行 output = sess.run(Val, feed_dict = {tensor: input_tensor})output將是你的結果

+0

是,* Val *取決於* tensor *。具體而言,* Val *取決於* tensor *的某些列中的值,因爲這些列中的值是* Val *的索引。但是,如果我創建了像'Val = Mat_items [item_index,:] - Mat_users [user_index,:]'會拋出錯誤,我的問題會更清楚嗎? – FesianXu

相關問題