我是靠谱客的博主 感性未来,最近开发中收集的这篇文章主要介绍深度学习-tensorflow1.x- 理解 经过softmax_cross_entropy_with_logit后 随机梯度下降的过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

环境
tensorflow 1.4
numpy 3.6

背景介绍
想深刻理解随机梯度下降的过程。

假设我们有两个神经元的输入【5,8】, 经过softmax 函数与交叉熵之后。
做随机梯度下降后, 这个神经的值变成什么样子了?

经过Softmax 与cross_entropy后的神经元求导数是什么呢? 下面是推导过程
在这里插入图片描述

完整代码

import tensorflow as tf
import numpy as np

x = tf.compat.v1.placeholder(tf.float32, [1,2], name='x')
y_ = tf.compat.v1.placeholder(tf.int32, [1,2], name='y_')

#fc1_biases = tf.compat.v1.get_variable('bias',dtype=tf.float32, initializer=[0.0,0.0])
#y = tf.matmul(x, fc1_weights) + fc1_biases
#y = tf.matmul(x, fc1_weights)
#y = tf.nn.relu(y)

y= tf.compat.v1.get_variable('weight', dtype=tf.float32, initializer=[[5.0,8]])
loss = tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_)

train_op = tf.train.GradientDescentOptimizer(2.0).minimize(loss)
input = np.array([[1,2]]).astype('float32')
label = np.array([[0,1]]).astype('int')

with tf.compat.v1.Session() as sess:
    # 初始化所有变量(权值,偏置等)
    sess.run(tf.compat.v1.global_variables_initializer())
    print(sess.run(y).tolist())
    before_softmax,_ = sess.run([y, train_op], feed_dict={x: input, y_: label})
    print(before_softmax)
    print(sess.run(y).tolist())


print(5.0-2*(np.exp(5.0)/(np.exp(5.0)+np.exp(8.0))))
print(8.0-2*(np.exp(8.0)/(np.exp(5.0)+np.exp(8.0))-1.0))

运行结果

[[5.0, 8.0]]
[[4.905148  8.0948515]]
[[4.905148029327393, 8.09485149383545]]
4.9051482536448665
8.094851746355133

最后

以上就是感性未来为你收集整理的深度学习-tensorflow1.x- 理解 经过softmax_cross_entropy_with_logit后 随机梯度下降的过程的全部内容,希望文章能够帮你解决深度学习-tensorflow1.x- 理解 经过softmax_cross_entropy_with_logit后 随机梯度下降的过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部