步骤
- 定义神经网络计算图
运行计算图
导包
1 | import tensorflow as tf |
设置算法超参数
1 | learning_rate_init = 0.001 |
数据集中输入图像的参数
1 | dataset_dir = './cifar10_data/' |
得到每一批次的训练数据
1 | def get_distorted_train_batch(data_dir, batch_size): |
得到每一批次的测试数据
1 | def get_undistorted_eval_batch(data_dir, eval_data, batch_size): |
根据指定的维数返回初始化好的指定名称的权重 Variable
1 | def WeightsVariable(shape, name_str='weights', stddev=0.1): |
根据指定的维数返回初始化好的指定名称的权重 Variable
1 | def BiasesVariable(shape, name_str='biases', init_value=0.0): |
2维卷积层的封装(包含激活函数)
1 | def Conv2d(x, W, b, stride=1, padding='SAME', activation=tf.nn.relu, act_name='relu'): |
2维池化层pool的封装
1 | def Pool2d(x, pool=tf.nn.max_pool, k=2, stride=2, padding='SAME'): |
全连接层的封装
1 | def FullyConnected(x, W, b, activation=tf.nn.relu, act_name='relu'): |
为每一层的激活输出添加汇总节点
1 | def AddActivationSummary(x): |
为所有损失节点添加标量汇总操作
1 | def AddLossesSummary(losses): |
打印每一层输出张量的shape
1 | def print_layers_shape(t): |
前向推断过程
1 | def Inference(images_holder): |
调用上面写的函数构造计算图,并设计会话流程
1 | def TrainModel(): |
1 | def main(argv=None): |
1 | if __name__ == '__main__': |
结果
训练结果
测试结果
Tensorboard 中查看
代码地址
github中没有上传cifar10数据集,需要的话请从百度云下载,或自行下载,按照如下解压
百度云 提取码:xw3x