下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Tensorflow加载Vgg预训练模型操作很多深度神经网络模型需要加载预训练过的Vgg参数,比如说:风格迁移、目标检测、图像标注等计算机视觉中常见的任务。那么到底如何加载Vgg模型呢?Vgg文件的参数到底有何意义呢?加载后的模型该如何使用呢?本文将以Vgg为例子,详细说明Tensorflov如何加载Vgg预训练模型。实验环境TnowTensorflow展示Vgg构造orensorflowsfornsnorsooelg指下载下来的Vgg预训练模型的文件地址读取Vgg文件solo打印Vgg的数据类型及其组成rnee代码输出结果如下:elsseseyseaderersionglolslerseco
2、nreluconrelupoolconreluconrelupoolconreluprint("data.keys:",data.keys()#得到对应卷积核的矩阵wegs定义Vgg的组成lersa'layers'on'relu1'conv1_2','relu1_2','pool'conv2_1','relu2'conv2_2','relu2_2','pool'conv3_1','relu3'conv3_2'
3、,'relu3_2','con'relu3_3','conv3'relu3_4','pool3','conv4_1','relu4'conv4_2','relu4_2','con'relu4_3','conv4'relu4_4','pool4','conv5_1','relu5_3',''relu5onv5'conv5_2''
4、relu5_4','relu5_2','con打印Vgg不同卷积层所对应的维度fornameinenumerate(layers):nd=nameifind=conv':rint("%s:%s"%(name,weightsi00200.shapeelifkind'relu':rint(name)elifkind'pool':rint(name)conv3_2:(3,3,256,256)relu3_2conv3_3:(3,3,256,256)relu3_3conv3_4:(3,3,256,256)relu
5、3_4pool3conv4_1:(3,3,256,512)relu4_1conv4_2:(3,3,512,512)relu4_2conv4_3:(3,3,512,512)relu4_3conv4_4:(3,3,512,512)relu4_4pool4conv5_1:(3,3,512,512)relu5_1conv5_2:(3,3,512,512)relu5_2conv5_3:(3,3,512,512)relu5_3conv5_4:(3,3,512,512)relu5_4Table2:Numbero(fparameter(innallijna).AA-LRNE那么Vgg19真实的网络结构是怎么样
6、子的呢,如下图所示:Table1:OonvNetconfigurations(此ownincoEumns).Thedepthof止已configurationsfromtheleft(A)loth&right(E),asmorekyersareadded(lheaddedJayenaieshowninbold).Theconvolutionalhjerparametersaredenoted雷"conv(receptivefieldsize)-;jiumberofchtn船l(Q二HeReLUac曲亂ionfuixtimi§not曲o训nfarbr列ity,Conv
7、NetAA-LRNBCDE1weigh:layers11weightlayers13weightlayers】6wcighllayers16weightlayers19wcighllayersicipu:(224x224RGBimagf:)conv3-64COUV3-&4LICNcoav3-64ct>iiv3-Mconv3-54coiwS*&4conv3-64cxmv3-64conv3-64ccmvS-M:naxpoolcmvJ12Scon3-12Scanv3428ronvJ-128corav3-128corav3-12Bcony3428convJ-liiicanv3-1
8、28canv3-128rnajpooiconv3-256conv3-25bcan3-25<5convj-256conv3-256convl-256oom3-z5S003256convi-256conv3'25tconv3-23<cx)m3-256cfjnv3-25&conv3-256cosi3-256cm>3-2£6jiarpoolconv3-5I2conv35I2conv3-512canv3-512Mm3-512conv3512cam3-212ooriv3d12a>nvl-5i2conv3-512conv3-52ccnv3-512canv3-
9、512canv3-512conv3'512cchi*3-S11laxpoolcoitv3-5l2canvJ-512canv3-312amv3-512sonv3-512oom3412ooai3-512convl-512conv3-5:2conv3-5L2ccnvSllcoiiv3-512conv3-512canv3-512CMV3-512xpc»lFC4096FC096FV1000scfl-nux5cvori£一十s_在本文,主要讨论卷积模块,華家通过对比可1以发现,我们打印出来的Vgg19结构一致。网g押结梅區构建Vgg19模型def_conv_layer(inpu
10、t,weights,bias):conv=tf.nn.conv2d(input,tf.constant(weights),strides=(1,1,1,1),padding='SAME')returntf.nn.bias_add(conv,bias)def_pool_layer(input):returntf.nn.max_pool(input,ksize=(1,2,2,1),strides=(1,2,2,1),padding='SAME')classVGG19:layers=('conv1_1','relu1_1','c
11、onv1_2','relu1_2','pool1','conv2_1','relu2_1','conv2_2','relu2_2','pool2','conv3_1','relu3_1','conv3_2','relu3_2','conv3_3','relu3_3','conv3_4','relu3_4','pool3','c
12、onv4_1','relu4_1','conv4_2','relu4_2','conv4_3','relu4_3','conv4_4','relu4_4','pool4','conv5_1','relu5_1','conv5_2','relu5_2','conv5_3','relu5_3','conv5_4','relu5_4')de
13、f_init_(self,data_path):data=scipy.io.loadmat(data_path)self.weights=data'layers'0deffeed_forward(self,input_image,scope=None):#定义net用来保存模型每一步输出的特征图net=current=input_imagewithtf.variable_scope(scope):fori,nameinenumerate(self.layers):kind=name:4ifkind='conv':kernels=self.weightsi0020
14、0bias=self.weightsi00201kernels=np.transpose(kernels,(1,0,2,3)bias=bias.reshape(-1)current=_conv_layer(current,kernels,bias)elifkind='relu':current=tf.nn.relu(current)elifkind='pool':current=_pool_layer(current)#在每一步都保存当前输出的特征图netname=currentreturnnet在上面的代码中,我们定义了一个Vgg19的类别专门用来加载Vgg1
15、9模型,并且将每一层卷积得到的特征图保存到net中,最后返回这个net,用于代码后续的处理。测试Vgg19模型在给出Vgg19的构造模型后,我们下一步就是如何用它,我们的思路如下:加载本地图片定义Vgg19模型,传入本地图片得到返回每一层的特征图image_path="data/test.jpg"#本地的测试图片image_raw=tf.gfile.GFile(image_path,'rb').read()#一定要tf.float(),否则会报错image_decoded=tf.to_float(tf.image.decode_jpeg(image_raw)
16、#扩展图片的维度,从三维变成四维,符合Vgg19的输入接口image_expand_dim=tf.expand_dims(image_decoded,0)#定义Vgg19模型vgg19=VGG19(data_path)net=vgg19.feed_forward(image_expand_dim,'vgg19')print(net)代码结果如下所示:'conv1_1':<tf.Tensor'vgg19_1/BiasAdd:0'shape=(1,?,?,64)dtype=float32>,'relu1_1':<tf
17、.Tensor'vgg19_1/Relu:0'shape=(1,?,?,64)dtype=float32>,'conv1_2':<tf.Tensor'vgg19_1/BiasAdd_1:0'shape=(1,?,?,64)dtype=float32>,'relu1_2':<tf.Tensor'vgg19_1/Relu_1:0'shape=(1,?,?,64)dtype=float32>,'pool1':<tf.Tensor'vgg19_1/MaxPool:
18、0'shape=(1,?,?,64)dtype=float32>,'conv2_1':<tf.Tensor'vgg19_1/BiasAdd_2:0'shape=(1,?,?,128)dtype=float32>,'relu2_1':<tf.Tensor'vgg19_1/Relu_2:0'shape=(1,?,?,128)dtype=float32>,'conv2_2':<tf.Tensor'vgg19_1/BiasAdd_3:0'shape=(1,?,?,
19、128)dtype=float32>,'relu2_2':<tf.Tensor'vgg19_1/Relu_3:0'shape=(1,?,?,128)dtype=float32>,'pool2':<tf.Tensor'vgg19_1/MaxPool_1:0'shape=(1,?,?,128)dtype=float32>,'conv3_1':<tf.Tensor'vgg19_1/BiasAdd_4:0'shape=(1,?,?,256)dtype=float32>
20、;,'relu3_1':<tf.Tensor'vgg19_1/Relu_4:0'shape=(1,?,?,256)dtype=float32>,'conv3_2':<tf.Tensor'vgg19_1/BiasAdd_5:0'shape=(1,?,?,256)dtype=float32>,'relu3_2':<tf.Tensor'vgg19_1/Relu_5:0'shape=(1,?,?,256)dtype=float32>,'conv3_3':&
21、lt;tf.Tensor'vgg19_1/BiasAdd_6:0'shape=(1,?,?,256)dtype=float32>,'relu3_3':<tf.Tensor'vgg19_1/Relu_6:0'shape=(1,?,?,256)dtype=float32>,'conv3_4':<tf.Tensor'vgg19_1/BiasAdd_7:0'shape=(1,?,?,256)dtype=float32>,'relu3_4':<tf.Tensor'v
22、gg19_1/Relu_7:0'shape=(1,?,?,256)dtype=float32>,'pool3':<tf.Tensor'vgg19_1/MaxPool_2:0'shape=(1,?,?,256)dtype=float32>,'conv4_1':<tf.Tensor'vgg19_1/BiasAdd_8:0'shape=(1,?,?,512)dtype=float32>,'relu4_1':<tf.Tensor'vgg19_1/Relu_8:0'
23、shape=(1,?,?,512)dtype=float32>,'conv4_2':<tf.Tensor'vgg19_1/BiasAdd_9:0'shape=(1,?,?,512)dtype=float32>,'relu4_2':<tf.Tensor'vgg19_1/Relu_9:0'shape=(1,?,?,512)dtype=float32>,'conv4_3':<tf.Tensor'vgg19_1/BiasAdd_10:0'shape=(1,?,?,512)
24、dtype=float32>,'relu4_3':<tf.Tensor'vgg19_1/Relu_10:0'shape=(1,?,?,512)dtype=float32>,'conv4_4':<tf.Tensor'vgg19_1/BiasAdd_11:0'shape=(1,?,?,512)dtype=float32>,'relu4_4':<tf.Tensor'vgg19_1/Relu_11:0'shape=(1,?,?,512)dtype=float32>,'pool4':<tf.Tensor'vgg19_1/MaxPool_3:0'shape=(1,?,?,512)dtype=float32>,'conv5_1':<tf.Tensor'vgg19_1/BiasAdd_12:0'shape=(1,?,?,512)dtype=float32>,'relu5_1':&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于机器学习的垃圾邮件分类器核心案例课程设计
- 基于模拟退火车间调度设计思路课程设计
- 编红绳课程设计
- 基于NLP的情感分析实战指南课程设计
- 2025年反诈骗知识竞赛问答试题及答案
- 2025年射洪县数学三年级第二学期期中联考试题(含答案解析)
- 2026中国数字孪生技术应用市场前景及行业案例与战略规划报告
- 2026散装医疗器械行业监管趋势与投资潜力研究报告
- 2026无线充电技术对高频软磁材料性能要求演变分析报告
- 2026生物降解材料产业发展趋势及投资战略规划分析报告
- 2025-2026学年广东省中山市七年级(下)期末数学试卷(含答案)
- (2026年)过敏性休克抢救流程课件
- 地铁票务系统运维员岗位招聘考试试卷及答案
- 2026年秋季学期苏教版新版六年级上册科学教学计划含教学进度表
- 2025年黑龙江省种子检验员资格认证笔试题库及答案
- 《AI通识》学习资料-题库-温州市继续教育-一般公需课
- 2025-2026学年湖北省武汉市武昌区人教版三年级下册期末考试数学试题 含答案
- 云南省2026年普通高等学校面向中等职业学校毕业生招生考试答案
- 六年级上册人教版道德与法治学科教学计划
- 山东省2025山东中国海洋大学财务处会计人员招聘5人笔试历年参考题库典型考点附带答案详解
- 山河童声二声部合唱简谱
评论
0/150
提交评论