环境:windows+tensorflow-GPU-1.8+python3.6
代码地址:https://download.csdn.net/download/lsjweiyi/10466889
我在cifar10代码的基础上将代码修改,排版,使功能模块更清晰,也更容易更换网络模型,代码里加上大量中文注释。有点基础的应该都能看懂了,主要目的是为了方便像我这样的新入门tensorflow的人写CNN网络,使用的时候要注意修改数据的路径,模型保存路径,图片的SIZE,类别NUM_CLASSES等一些参数,这些参数我都放在了每个PY文件的最前面,方便找到并进行修改。
我在其中加入了保存混淆矩阵和图片分类错误路径的功能,可以有更多途径分析网络训练的效果。
此外,内置的网络模型是lenet-5,这个只是为了看起来简单,我规范化代码的目的就是方便调用别的网络,比如tensorflow里自带的其他网络,接下来给出调用的方式:
比如我要调用Alexnet等网络:
#import的方式
from tensorflow.contrib.slim.nets import resnet_v1 #import resnet_v1
from tensorflow.contrib.slim.nets import alexnet # import alexnet
#这里还有VGG,inception等网络,都可以直接引用
接下来是调用这些网络:
#首先找到train.py或者test.py里面的如下代码
logits=model.model(images)#调用模型,返回预测的概率矩阵
#这句话,替换为如下语句,这里以alexnet为例,当然上面的import不能少
logits,_=alexnet.alexnet_v2(images,num_classes=model.NUM_CLASSES,is_training=True,dropout_keep_prob=0.5)
#其中dropout_keep_prob=0.5是dropout的概率,具体解释,请自行看源码上的注释,train和test有一点点区别
#这里有一个不好的地方就是,调用这些模型,他是限制了图片的输入大小的,例如alexnet限制的是224*224,不同的网络不同,可以在源码中找到要求。