TensorFlow中定义"运算"

定义“运算”的过程是建立模型的核心过程,直接决定模型的拟合效果。
一 定义正向传播模型
最简单的神经元是只有一个神经元。还有多层神经网络,卷积神经网络、循环神经网络及更深层的GoogLeNet、Resnet等。
它们都是由神经元以不同的组合方式组成的网络结构,而且每年还会有很多更高效且拟合性更强的新结构诞生。

二 定义损失函数
损失函数主要是计算“输出值”与“目标值”之间的误差,是配合反向传播使用的。为了在 反向函数中可以找到最小值,要求该函数必须是可导的。
损失函数近几年来没有太大的变化,只需要记住常用的几种,并了解内部原理就可以了,不需要掌握太多的细节,因为TensorFlow框架已经做好了。

三 优化函数、优化目标
在有了正向结构和损失函数后,就可以通过优化函数来优化学习参数,这个过程也是在反向传播中完成的。
反向传播的过程,就是沿着正向传播的结构向相反方向将误差传递过去。这里面涉及的技术比较多,如L1、L2正则化、冲量调节、学习率自适应、adm随机梯度下降算法等,每个技术都代表一个时代。
随着深度学习的飞速发展,反向传播过程的技术会达到一定程序的瓶颈,更新并不如网络结构变化得那么快,只需要将常用的几种记住即可。

四 迭代更新参数到最优解
在迭代训练环节中,都是需要通过建立一个session来完成的,常用的是使用with语法,可以在session结束后自行关闭,当然还有其他方法。
with tf.Session() as sess:
在session中通过run来运算模型中的节点,在训练环节中也是如此,只不过run里面放的是优化操作OP,同时会在外层加上循环次数。
    # Fit all training data
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})
真正使用过程中会引入一个叫做MINIBATCH概念进行迭代训练,即每次取一定量的数据同时放到网络里进行训练。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/79948709
文章标签: TensorFlow
个人分类: 人工智能
上一篇TensorFlow定义"学习参数"的变量
下一篇TensorFlow的运行机制
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭