本文记录tensorflow搭建简单神经网络,并进行模块化处理,目的在于总结并提取简单神经网络搭建的基本思想和方法,提炼核心结构和元素,从而能够移植到日后深入学习中去。
1 模块提炼
1.1 template_forward.py
a 结构分析
forward.py
用于构建网络图结构,具体分为以下几步:
forward()主方法
– 设计网络层数和维度get_weight()
– 传入维度和正则化信息,生成符合要求的weightget_bias()
– 传入维度信息,生成符合要求的bias
b 代码分析
import tensorflow as tf
# 主方法,定义前向传播网络结构
def forward(x, regularizer):
w =
b =
y =
return y
# 获取权重变量
def get_weight(shape, regularizer=None):
"""
传入指定的shape和regularizer(lambda)
返回tensorflow的Variable类型变量,用于优化weight
"""
w = tf.Variable()
if regularizer:
tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(regularizer)(w))
return w
# 获取偏置变量
def get_bias(shape):
"""
传入指定的shape
返回tensorflow的Variable类型变量,用于优化bias
"""
b = tf.Variable( )
return b
1.2 template_backward.py
a 结构分析
backward.py
用于构建网络图结构,具体分为以下几步:
- 定义常量:
STEPS
:总训练轮数BATCH_SIZE
:每batch训练样本数LEARNING_RATE_BASE
:学习率初值,作为指数衰减学习率的初始值LEARNING_RATE_DECAY
:学习率衰减基数,作为指数衰减项的基底REGULARIZER
:正则化强度 λ λ
backward()主方法
:
- 定义常量: