SSD网络参数进行简单的分析程序

来源:互联网 发布:淘宝周六福旗舰店真假 编辑:程序博客网 时间:2024/06/05 07:51

由于要在FPGA上实现SSD,加上神经网络的硬件实现和软件上的实现有很大差距,所以很有必要对网络本身的权重和参数进行分析,所以就写了个简单的程序,看了一下参数的分布情况

代码如下

import osimport pathimport numpy as npimport matplotlib.pyplot as pltfrom tensorflow.python import pywrap_tensorflowcheckpoint_path='./checkpoints/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt'# print(path.getcwdu())# print(checkpoint_path)hist_scale=0.05#read data from checkpoint filereader=pywrap_tensorflow.NewCheckpointReader(checkpoint_path)var_to_shape_map=reader.get_variable_to_shape_map()data_print=np.array([])for key in var_to_shape_map:    print('tensor_name',key)    ckpt_data=np.array(reader.get_tensor(key))#cast list to np arrary    ckpt_data=ckpt_data.flatten()#flatten list    data_print=np.append(data_print,ckpt_data,axis=0)# data_print=data_print[np.argsort(data_print)]#sort is unnessarytotal_num=data_print.shapeprint('total_number is %s,max_value=%s,min_value=%s,mean_value=%.3f'%(total_num,np.max(data_print),np.min(data_print),np.mean(data_print)))data_print=data_print[data_print<hist_scale]data_print=data_print[data_print>-hist_scale]out_number=int(total_num[0]-data_print.shape[0])ratio=float(out_number)/float(total_num[0])*100print('the number of out of hist is %s ,ratio  %.3f%%'%(out_number,ratio))#number of out of histfig, ax0 = plt.subplots()bar=np.arange(np.min(data_print),np.max(data_print),0.0005)# print(bar)ax0.hist(data_print, bar, histtype='bar', facecolor='b')fig.tight_layout()plt.show()

其中主要的工作还是将各个参数从TensorFlow的ckpt文件中读出,然后再再对读出的数据进行分析,用图表表示出来,结果如下


可见权重和偏置的数据基本集中在[-0.05,0.05]之间,占到了数据量的99.5%以上。

原创粉丝点击