为什么张量流的权重有时不会改变?

时间:2018-04-30 05:57:19

标签: python tensorflow

我想尝试解决x1 + x2 < 1的二分问题。 有一个问题是有时网的权重不会改变。但有时它的工作正常。这是我的代码。

import tensorflow as tf
import numpy as np
import random
x_ = tf.placeholder(tf.float32,shape=(None,2),name = 'input')
y_ = tf.placeholder(tf.float32,shape=(None,2),name='output')
w1 = tf.Variable(tf.truncated_normal([2,4],0.0,0.2))
b1 = tf.Variable(tf.truncated_normal([1,4],0.0,0.2))
w2 = tf.Variable(tf.truncated_normal([4,2],0.0,0.2))
b2 = tf.Variable(tf.truncated_normal([1,2],0.0,0.2))
a = tf.tanh(tf.matmul(x_,w1)+b1)
y = tf.tanh(tf.matmul(a,w2)+b2)
loss = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,1e-10,1.0)))
op = tf.train.AdamOptimizer(0.001)
tra = op.minimize(loss)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    aa = np.random.rand(100,2)
    bb = np.random.rand(100,2)
    for i in range(100):
        t = int(aa[i][0]+aa[i][1]<1.0)
        bb[i][t] = 1.0
        bb[i][t^1] = 0.0
    print(sess.run(w1))
    for i in range(50000):
        f = random.randint(0,10)
        ae = aa[f*10:(f+1)*10]
        be = bb[f*10:(f+1)*10]
        sess.run(tra,feed_dict={x_:ae,y_:be})
        if i%1000 == 999:
            print(sess.run(w1))
            e = sess.run(loss,feed_dict={x_:aa,y_:bb})
            print(e)

损失有时是一个很大的浮动并且不会改变。我尝试改变初始化的方式,但它不起作用。我甚至不知道如何找到哪里 问题。

0 个答案:

没有答案