Tensorflow-模块化神经网络

以模块化的方式来定义一个NN

inference():

定义前向传播过程,即FP过程。因为tensorflow的NN构建可以理解为实际上前期工作都是在定义一张计算图,只有到session处才是开始图的运算。所以前向过程反映了整个NN的框架,包括多少层,有哪些层,各个层由哪些参数,使用什么激活函数都是在这个inference函数中完成的。

最终返回的是前向传播FP的结果,即输入通过前向传播NN的输出结果logits。

注意,这里前向的函数能传递的参数是有限的。因为本身其就不是一个用于整个NN自定义的通用的函数。其更多的是对一个给定的NN进行一些结构参数的配置。也就是说,对于一个inference函数,其对应的NN的结构从类型上来说是在这个函数的内部确定下来的,并不能作为参数进行传递,而传递的参数应该是一些反应整个NN结构大小的参数,例如第几层有几个神经节点等。

loss():

定义了用于NN的训练的loss function。包括数据项,正则项等等,最终返回的就是一个loss_func。可以有cross_entropy等形式

train():

定义了训练过程,包括训练过程中需要的一些操作(tensorflow在session之前的操作实际上可以理解为是不停地向计算图中加入操作,最后在session中完成这些操作的运算)。所以包括加入优化器Optimizer等操作,最后返回train_step。在这里,实际上相当于定义了反向传播梯度运算。这都是有tensorflow提供api去完成的。

evaluation():

定义了准确率的计算的操作:accuracy。最终返回的是测试的准确率。

placeholder_inputs():

定义了各个输入的占位符,用于数据集和标签的传递。用于最终的NN的训练。

define_constants():

定义各种NN所需要的常数。例如BATCH_SIZE、TRAINING_STEPS等等

=======================以上几个函数都只是向计算图中加入操作=======================

==============================并没有真正地去运算===============================

run_training():

在这个函数中,完成training的过程的运算。即在这里使用session会话。

main():

主函数。一切操作从主函数而起。这是为了和过程性编程的思想匹配。python是解释性语言,所以实际上并没有什么主函数之分,在这里强行按照过程性编程的思想规范化程序代码。一切都从main而起。最后还需要定义一个主函数入口。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值