0
在tensorflow也許作爲一個典型的訓練循環如下:tensorflow在每次調用compute_gradients()時創建一個新的numpy數組嗎?
cg = opt.compute_gradients(loss)
grads = [None] * len(cg)
for gv in cg:
grads[i] = gv[0]
# ... do some process to grads ...
apply_gradients = opt.apply_gradients(cg)
while (...):
gradients = sess.run(grads)
feed = dict()
for i, grad_var in enumerate(cg)
feed[grad_var[0]] = gradients[i]
sess.run(apply_gradients, feed_dict=feed)
每個調用sess.run(grads)
時間,則產生一個新的numpy的陣列gradients
(使用新分配的內存儲器)。我想爲所有訓練迭代使用固定的numpy數組,我怎麼能這樣做?
對不起,我的問題還不夠清楚。我編輯它,現在可以給我一些建議嗎?現在在我的代碼中'漸變'是一個numpy的ndarray,每次它是一個新的數組。我是否可以在所有訓練迭代中使用具有固定內存的數組?我怎麼能這樣做? –
我有個主意。我想首先我可以編寫一個python C擴展,它創建一個使用固定內存的numpy數組。然後我們編輯tensorflow的session run()實現,讓它使用我們自己的數組,然後每次執行'sess.run(grads)'時,它都會使用固定的內存。 –