python - 为什么随着训练的进行,我的 tensorflow 代码运行速度越来越慢?

标签 python tensorflow

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/

相关文章:

python igraph,基于顶点名称/标签的图交集/并集

python - 在标准 Python 文档中,如何找到函数返回的对象类型?

python - 分布式 tensorflow : Create a session in only one worker to print the results

tensorflow - tf keras SparseCategoricalCrossentropy 和 sparse_categorical_accuracy 在训练期间报告错误值

python - 从哪里开始解析 JSON?

python - beautifulsoup findall

python 读取视频

Tensorflow tf.losses.cosine_distance 大于 1

tensorflow - 如何为 tensorflow 服务准备预热请求文件?

python - Tensorflow 在批处理上是独一无二的