【问题标题】:Two Layer Neural network Tensorflow python两层神经网络 Tensorflow python
【发布时间】:2017-08-31 22:04:15
【问题描述】:
#layer 1
w1 = tf.Variable(tf.zeros([784, 30]))
b1 = tf.Variable(tf.zeros([30]))
y1 = tf.nn.relu(tf.matmul(X, w1) + b1)

#layer 2
w2 = tf.Variable(tf.zeros([30, 10]))
b2 = tf.Variable(tf.zeros([10]))
logits = tf.matmul(y1, w2) + b2
preds = tf.nn.softmax(logits)

您好,我是 TensorFlow 和神经网络的新手。我试图实现一个用于数字识别的两层神经网络。当只有一层时代码工作正常,但在我添加第二层后,精度下降到 0.11xxxx。我的代码有什么问题?提前致谢

【问题讨论】:

    标签: python tensorflow neural-network


    【解决方案1】:

    您可以使用 random_normal 初始化权重。

    w1 = tf.Variable(tf.random_normal([784, 30]))
    ...
    w2 = tf.Variable(tf.random_normal([30, 10]))
    

    【讨论】:

    • 您好,感谢您的建议。它现在可以工作,但它仅从 0.43 开始,在 20 个 epoch 后达到 0.907,这还不错,但我想知道为什么它比 1 层还要糟糕,这对我来说没有意义。
    • 我也意识到第一次训练损失非常高(11.8),也许这就是它从 0.43 开始的原因。我用它来计算损失:batch_xentropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=Y, logits = logits))
    • 我找到了解决方案,使用 truncated_normal 初始化解决了这个问题。感谢您为我指明了正确的方向。
    猜你喜欢
    • 2018-11-05
    • 2016-11-29
    • 1970-01-01
    • 2018-08-14
    • 2011-03-28
    • 2016-09-02
    • 2018-04-21
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多