在tensorflow+VGG运行的第一个程序

试着在tensorflow上运行第一个小程序,其中源代码都是有的,具体网址可以看这个https://www.cs.toronto.edu/~frossard/post/vgg16

原来是caffe的,现在移植到了tensorflow上,能够提供更好的接口

输出模型的类型,即我们需要分类的名称都在imagenet_classes.py

vgg16_weights.np是已经训练好的权重,,可以直接调用

vgg的网络结构都在vgg16.py里面,有空可以来分析分析~,作者在里面加入了预处理,直接可以计算平均像素值,不用像caffe还要自己生成,VGG的结构如下:

VGG是卷积网络,由图片上可知,前面经历了卷积+激活(激活函数采用的是relu,relu函数在收敛性和时间上都较优于其他函数,后面讲对relu的函数性能做解释),然后进行池化层,再进行一次全连接+relu激活,最后激活函数采用的softmax,softmax可以对属于的类进行判断,生成属于每一类的概率值,概率最大的值就是最后的归属类,同时也可以看到属于其他类的概率值,这就是使用softmax的好处。

卷积我是这样理解的,类似于图像处理的模板,你统一输入一个模板,比如三阶的全1矩阵,你对图像中的每一个3阶矩阵进行卷积,最后得到的值都有可能不一样,有些得到的值一样的,可能像素值比较相同,相似度较高,明显不同图像的,得到的卷积值就不一样,所以卷积类似于提取特征。卷积就相当于是加权,但是卷积在处理的过程中卷积核进行了翻转,

池化的作用简单的说就是降维了。有很多种降维的方式,比如这里的max pooling,就是选择最大值进入下一层,比如2N*2N的原始图像,进行2*2的max pooling后就是N*N,瞬间减少了很多~减少了运算量。

下载好所有的文件运行python vgg16.py

由于tensorflow不支持py27,只能用py35,但是vgg里面是用的27的语法,所以会报这里的输出错误,只需要这样加个括号就行

然后再次执行,输出以下就是正确的


输出的是每一层的模型大小,最后的输出是各个的概率。。。。

不过很不高兴的是。。。居然把我的神兽

分类成了这个。。。


纸风车是什么鬼。。。什么鬼 。。。。哎,

对正常的还分类的比较对,哈哈


雪橇犬,种类还准确的~心疼的我神兽,其实我的神兽也是狗,哈哈~

对于vgg网络的细节,后面再继续谈~玩通一个网络,再继续下一个~come on guys~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值