model quantization

来源:互联网 发布:吴用 知乎 编辑:程序博客网 时间:2024/06/05 19:57
'''
Author:yangtong
Date: 2017.07.14
File description:scripts for model quantization
'''
import tensorflow
import cv2
from matplotlib import pyplot as plt
import numpy as np
import sys
sys.path.append('/home/y00351600/work/deeplab_v2/deeplab/python')
import caffe


net = caffe.Net('/home/y00351600/work/work-dir/caffes/models/FSRCNN/FSRCNN.prototxt',
                '/home/y00351600/work/work-dir/caffes/models/FSRCNN/FSRCNN.caffemodel',caffe.TEST)


#*-----------output info for view ------------*#
print 'estimate weights in each layer:'
keys = net.params.keys()
for key in keys:
    print '-------' + key + '---------'
    if len(net.params[key])==1:
        print 'single val:' + str(net.params[key][0].data)
    if len(net.params[key])==2:
        print 'abs weight min: ' + str(np.min(abs(net.params[key][0].data))) +'\t ' \
              'abs weight max: ' + str(np.max(abs(net.params[key][0].data)))


        print 'abs bias   min: ' + str(np.min(abs(net.params[key][1].data))) + '\t ' \
              'abs bias   max: ' + str(np.max(abs(net.params[key][1].data)))


#*--------quantize and store to file----------*#
q_if = {}
for key in keys:
    q_if[key] = 0
    est_int_part = int(np.max(abs(net.params[key][0].data))+1)




#"""read in a picture and show"""
src_img = cv2.imread('/home/y00351600/work/work-dir/src_images/pic1.jpg')
plt.imshow(src_img)
plt.show()


#"""preprocess pic and set as input blob"""
grayimg = cv2.cvtColor(src_img,cv2.COLOR_BGR2GRAY)
im1 = cv2.resize(grayimg,(300,300))
im1.reshape([1,1,300,300])
net.blobs['data'].data[...] = im1


blob_out = net.forward()
#print type(net.blobs.items())
print 'estimate blob of each layer:'
for k, v in net.blobs.items():
#    print v.data.shape
    print "-----------" + k + "--------------"
    print 'min: ' + str(np.min(abs(v.data)))
    print 'max: ' + str(np.max(abs(v.data)))


#**---------show some results-------------**#
a = blob_out.values()
plt.imshow(a[0][0][0])
#plt.show()
原创粉丝点击