import tensorflow as tf
input_data = tf.constant([[1.,1.]])
output_data = tf.constant([[1.,0.]])
weight = tf.Variable([[1.,1.],
[1.,1.]])
sess = tf.Session()
sess.run(tf.global_variables_initializer())
optimizer = tf.train.GradientDescentOptimizer(0.1)
for epoch in range(1000):
y = tf.matmul(input_data, weight)
loss = (output_data[0][0] - y[0][0])**2 + (output_data[0][1] - y[0][1])**2
sess.run(optimizer.minimize(loss))
print(epoch)
随着纪元的推移,上面的程序变得越来越慢。我认为这是因为每个时期都会不断添加新节点。我该如何处理这个问题?
最佳答案
试试这个...
import time
import tensorflow as tf
input_data = tf.constant([[1.,1.]])
output_data = tf.constant([[1.,0.]])
weight = tf.Variable([[1.,1.],
[1.,1.]])
optimizer = tf.train.GradientDescentOptimizer(0.1)
y = tf.matmul(input_data, weight)
loss = (output_data[0][0] - y[0][0])**2 + (output_data[0][1] - y[0][1])**2
train = optimizer.minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print('Initial weights: ', sess.run(weight))
for epoch in range(1000):
st = time.time()
sess.run(train)
print('Epoch %3d : %.3f ms' %(epoch, 1e3*(time.time()-st)))
print('Weights: ', sess.run(weight))
原始代码在每个时期重新创建图表。如果您这样做,图形仅创建一次,循环中唯一的工作是梯度计算/更新。
关于python - 为什么随着训练的进行,我的 tensorflow 代码运行速度越来越慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53137115/