python版本对ckpt文件大小的影响

前言

一个偶然的因素,发现了同一个网络结构,自己训练出来的ckpt文件中meta文件的有两种大小规格。仔细查找后,发现是所用的python环境不一样(也有可能是tensorflow版本的影响)。同时试了一下两个python版本的差别。

环境配置

 

   
系统 Ubuntu 16.04
显卡 1080Ti
cuda cuda8+cudnn6
python2 python2.7.3+tensorflow-gpu 1.2.0
python3 python3.5.2+tensorflow-gpu 1.8.0

网络结构

inception-resnet-V1
batch_size(train) 128
batch_size(test) 128

训练结果

在不改变网络结构的前提下,只是改变python环境,结果如下表所示:

python版本 data文件 meta文件 训练速度 测试结果 其他问题
python2.7 273.6M 176.4M 132s/250step 95.96% 训练后的cpkt模型可以接着被python3.5接着训练
python3.5 273.6M 67.3M 108s/250step 96.02% 训练后的cpkt模型可以接着被python2.7接着训练

关于上表解释一下:

meta文件:在用python2.7与python3.5训练出来的模型中,meta文件的大小不一样!!用tensorboard打开的图是一样的。这可  能是里面的编码不一样了?

训练速度:网络结构没有修改的情况下,batch_size都是128,每250步打印一次间隔的时间。稳定后取的值,python3.5的训练速度会快很多;

测试结果:测试的时候也是用128每个批次进行测试,一共2800+张测试图片。初步猜测会不是是两个版本的计算方式不同?一个是计算总体的平均值,一个是计算批次的平均值?

其他:无论用python3.5或者是python2.7训练的结果,测试的时候都可以用python2.7或者python3.5测试。

测试结果

昨天无聊玩了一下训练的过程。今天心血来潮,玩了一个测试的过程。

测试过程如下:

1.事先保存了由python2.7训练出的模型,然后切换到pyhon3.5继续训练10步保存成新的模型;

2.模型是由检测目标后,然后再投入到第二个模型中分类。所以会分别再python2和python3的环境中检测两部分所需的时间;

3.每次测试用五张图片轮流测试,得出每张图片在每个过程所需的时间,再求均值。

结果如下表:

                             python2.7环境下测试                                    python3.5环境下测试
         2.7训练出的模型       3.5训练出的模型         2.7训练出的模型      3.5训练出的模型
检测目标所需时间 0.45/0.44/0.44/0.43/0.51 0.43/0.44/0.44/0.44/0.50   1.00/1.01/0.99/1.01/1.05 0.57/0.65/0.60/0.60/0.64
分类网络所需时间 5.7/4.84/4.82/4.79/4.81 4.80/4.78/4.80/4.80/4.78   7.87/7.84/7.85/7.89/7.87 4.6/4.43/4.86/4.89/4.52
均值 0.454+4.992=5.446s 0.45+4.792=5.242s   1.021+7.864=8.885s 0.612+4.66=5.272s

从上图看出,如果用2.7训练的模型,用3.5测试,速度会下降很多!

当然,也有可能是因为tensorflow版本引起的以上的问题,但是懒得进行再次的尝试测试了。。。

你可能感兴趣的:(python基本语法)