本文主要是https://github.com/joelthchao/tensorflow-finetune-flickr-style代码的解释,用于阐述如何构建网络,载入数据以及微调一个已有数据的网络。
1.整体结构
工程主要有5个python文件构成,其中:
- finetune.py 为工程主体,调用不同模块完成finetune过程
- model.py 构架所使用的网络
- network.py 详细定义网络的不同层的属性
- dataset.py 用于读入数据
- assemble.py 用于下载数据文件。是一个独立模块
2.构建网络
构建网络主要由network.py和model.py构成。
其中model.py定义并返回一个alexnet。关于AlexNet的介绍可以参考网上其他资料,在此不赘述
而network.py详细定义Net的每一层实现。在AlexNet中主要使用的是卷积层conv、归一化层norm、池化层pool以及全连接层fc让我们来了解下各层参数的意义.
2.1.conv
def conv(input, k_h, k_w, c_o, s_h, s_w, name, relu=True, padding=DEFAULT_PADDING, group=1)
其实在TF里面是存在直接定义卷积层的函数tf.nn.conv2d的,当然这里面也使用了conv2d来定义卷积层。
参数列表:
- input 输入图像