简介
分类
模型转换
网络参数转到MAT 文件
keras权重到mat
可知直接用matlab读取hdf5文件, 也可以通过如下脚本 keras2mat.py
转换.
import os
import scipy.io as sio
from ssd import SSD300
modelW = '[YOUR WEIGHT PATH in hdf5]'
input_shape = (6, 4000, 1)
NUM_CLASSES = 11
model = SSD300(input_shape, num_classes=NUM_CLASSES)
model.load_weights(modelW, by_name=True)
output_dir = './'
netpars = {}
for w in model.get_weights():
print(w.shape)
for layer in model.layers:
wb = model.get_layer(layer.name).get_weights()
print(layer.name, len(wb))
if len(wb) == 0:
netpars[layer.name + 'v'] = wb
if len(wb) > 0:
netpars[layer.name + 'w'] = wb[0]
if len(wb) > 1:
netpars[layer.name + 'b'] = wb[1]
sio.savemat(output_dir + 'keras_ssd.mat', {'netpars': netpars})
caffe 到 mat
可以使用caffe的matlab接口, 也可以使用如下脚本 caffe2mat
转换
import os
import scipy.io as sio
import caffe
output_dir = './mat/'
net_model = '../../model/ssd/deploy.prototxt'
net_weights = '../../model/ssd/VGG_INST25_SSD_300x300_iter_50000.caffemodel'
def GetFileNameAndExt(filename):
import os
(filepath, tempfilename) = os.path.split(filename)
(shotname, extension) = os.path.splitext(tempfilename)
return shotname, extension
def load(net_model, net_weights, output_dir):
name, ext = GetFileNameAndExt(net_weights)
caffe.set_mode_cpu()
net = caffe.Net(net_model, net_weights, caffe.TEST)
netpars = {}
for param_name in net.params.keys():
weight = net.params[param_name][0].data
netpars[param_name + 'w'] = weight
if len(net.params[param_name]) > 1:
bias = net.params[param_name][1].data
netpars[param_name + 'b'] = bias
biasshape = bias.shape
else:
biasshape = []
print(param_name, len(net.params[param_name]),
'weights:', weight.shape, 'bias:', biasshape)
sio.savemat(output_dir + name + '.mat', {'netpars': netpars})
if __name__ == "__main__":
if os.path.exists(output_dir) == False:
os.mkdir(output_dir)
load(net_model, net_weights, output_dir)
print("========Done!=========")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)