TensorFlow和cnn神经网络学习入门

  学习了基本的神经网络知识后,要使用框架了,这样才能出来更加复杂的情况,更快的开发出模型。

  首先安装后,按照官网写了一个例子,但是又好多不懂,但只是第一步,

看这段代码,其实给你提供了很多学习tf的线索,TensorFlow中有很多变量,变量操作也是一个模块。

a = tf.constant(34)
print(type(a))
<class 'tensorflow.python.framework.ops.Tensor'>
b = tf.zeros() # 这个函数是最容易理解的了

还有tf.train.GradientDescentOptimizer这个对象,真的囊括了之前做的很多工作,

__init__(
    learning_rate,  # 这个属性有默认值啊
    use_locking=False,
    name='GradientDescent'
)
# 看看这个train方法,有点不知道什么意思,在自己写神经网络的时候,都是按照梯度下降的公式来的,这里什么也没见到,很可能是作者隐藏了
# 这里应该看到一个方法,update(param,gradient),使用梯度值来更新参数,这就是升级网络的核心。
def train(cost, global_step): optimizer = tf.train.GradientDescentOptimizer(learinng_rate) train_op = optimizer.minimize(cost,global_step= global_step) return accuracy

 tf的一些张量运算方法

tf.log(x, #   name=None)  # x不仅是数字,而可以扩展至tensor,所以TensorFlow中好多都是针对tensor的计算。
x = tf.constant([[1., 1.], [2., 2.]])
tf.reduce_mean(x)  # 1.5
tf.reduce_mean(x, 0)  # [1.5, 1.5]
tf.reduce_mean(x, 1)  # [1.,  2.]  # mean是平均值的意思,体会这个reduce的意思,大体理解就是降维。类似的tf.reduce_sum()等 



  1、神经网络最基本的原理也是函数拟合,所以lose function就显得非常重要了,我们训练的目的之一就是减小损失函数,常用的损失函数参考:https://www.cnblogs.com/hypnus-ly/p/8047214.html,比如entropy_cross,比较两个概率分布的差异,同时又使得反向传播时好计算。

  2、神经网络训练都是以一个batch为训练单位,即一批一批的训练,那么反向传播时怎么计算导数呢?可以体会,这个batch轴对于w没有什么影响,对于b有一些影响。只不过反向传播时,loss function取均值。

原文地址:https://www.cnblogs.com/Robin008/p/9985947.html