2017-09-26 86 views
0
def trainx(x): 
    train = tf.train.GradientDescentOptimizer(x).minimize(error) 
    return train 

with tf.Session() as sess: 
    for i in [0.01,0.02,0.03, 0.04]: # 
     merge = tf.summary.merge_all() 
     tf.global_variables_initializer().run() 



     writter = tf.summary.FileWriter('4004/'+str(i), sess.graph) 

     for i1 in range(100): 

      error_sum = sess.run(merge, {x:inp, y:out}) 
      writter.add_summary(error_sum, i1) 
      sess.run(trainx(i), {x:inp, y:out}) 

只是通过你的代码的一部分,使事情更简单。 请看图片波纹管:是在tensorflow中为每次迭代/运行生成的新权重?

enter image description here

如果你看到红线约0.370和蓝色开始于大约0.310。这是否意味着,张量流中的所有运行的初始重量都不相同?因为如果是这样的话,考虑到梯度下降在错误/损失函数之后应用,所有线将从同一点开始。我认为每次迭代都会产生新的权重,这不是我正在寻找的。我怎么能解决这个问题?将不胜感激。

+0

不同的线代表什么? – Engineero

+0

@Engineero哦,它是一层网络的丢失/错误功能......没什么特别的。 –

+0

循环内的'trainx(i)'将在每次迭代中创建一个新的'tf.train.GradientDescentOptimizer'(带*线性增加学习速率*)。这不可能达到预期的结果。相反,创建一个优化器并在循环外部调用'minim()',并在循环内重用该训练操作。 – mrry

回答

相关问题