其中常用的fetches和feed_dict就是常用的傳入引數。fetches主要指從計算圖中取回計算結果進行放回的那些placeholder和變數,而feed_dict則是將對應的資料傳入計算圖中佔位符,它是字典資料結構只在呼叫方法內有效。
dien 的**在 model.train() 和 model.calculate() 中都用到了 session.run() 函式,
在這裡,train() 要進行模型的優化,所以需要輸出 self.optimizer, 保證 self.optimizer 這一變數進行了更新
calculate() 實際上是對應測試,需要輸出 self.y_hat, 但並不需要進行模型的優化,迭代乙個梯度步
似乎是必須要指定最後一維的維數,而先前 self.target_timepoint, self.item_history_timepoint 的維度無法被推測出來。因為 [128, 7], 128 是 batch size, 可能會變化,但是 tensorflow 靜態圖,必須先預先確定維數。
self.target_timepoint = tf.placeholder(tf.float32, [none, 7], name='target_timepoint') #[128, 7]
類似如下在 model 中的修改修改:
self.timeconsecutive_history.set_shape([none, none, 7])
self.timecurrent_history.set_shape([none, none, 7])
這兩種修改似乎都可以成功。
target_timepoint_np = np.zeros((n_samples, len(target_timepoint[0]))).astype('float32') # [128, 7]
for idx in range(128) :
target_timepoint_np[idx, :] = target_timepoint[idx]
最終導致如下錯誤:
valueerror: cannot feed value of shape (128, 0) for tensor u'inputs/target_timepoint:0', which has shape '(?, 7)'
輸出 print target_timepoint_np, 發現了最後面有乙個空 , 這才發現了這個錯誤。
# from __future__ import absolute_import
# from __future__ import division
# from __future__ import print_function
需要使用這個。
或者 保證除法有乙個數是浮點數,這樣,就可以使得最終的數也是浮點數。我之前好像全部都弄錯了?!
奇怪的是,當換用了小的 train data, 程式能夠正常執行了。
Tensorflow的一些基本用法
在使用tensorflow中會遇到一些其基本的用法,再次作為記錄備忘 在計算整體的loss是會將不同部分的loss放入乙個集合中,最後計算整體的loss,因此會用到tf.add to collection,具體參考tensorflow中的cifar10的例子,用法如下所示 tf.add to col...
TensorFlow的一些學習筆記
1 靈活性tensorflow不是乙個嚴格的神經網路工具包,只要你可以使用資料流圖來描述你的計算過程,你可以使用tensorflow做任何事情。你還可以方便地根據需要來構建資料流圖,用簡單的python語言來實現高層次的功能。2 可移植性tensorflow可以在任意具備cpu或者gpu的裝置上執行...
tensorflow遇到的一些錯誤
1 tensorflow dtype t.dtype.base dtype attributeerror float object has no attribute dtype 參考 我報錯的行是 disc gradients disc optimizer.compute gradients dis...