这里到Matlab中导出三层卷积核参数(即网络权重和偏移)
保存为txt文本文件,简单一点,只用 3倍模型
%保存模型权重 %载入模型 model = 'model\x3.mat'; load(model); %保存模型数据 %偏移 %--------------------------------------- FID=fopen('model_x3.txt','w'); %biases_conv1 fprintf(FID,'biases_conv1\n' ); k=length(biases_conv1); fprintf(FID,'长度 %d\n',k );%有多少个 for j=1:k fprintf(FID, '%f \n',biases_conv1(j)); % end %-------------------------------------- %biases_conv2 fprintf(FID,'biases_conv2\n' ); k=length(biases_conv2); fprintf(FID,'长度 %d\n',k );%有多少个 for j=1:k fprintf(FID, '%f \n',biases_conv2(j)); % end %-------------------------------------- %biases_conv3 fprintf(FID,'biases_conv3\n' ); fprintf(FID,'长度 %d\n',1 );%有多少个 fprintf(FID, '%f \n',biases_conv3); % %-------------------------------------- %权重 %weights_conv1 fprintf(FID,'weights_conv1\n' ); [m,n,p]=size(weights_conv1); fprintf(FID,'长度和宽度 %d %d\n',m,n );%有多少个 for i=1:n for j=1:m fprintf(FID, '%f \n',weights_conv1(j,i)); % end end %-------------------------------------- %weights_conv2 fprintf(FID,'weights_conv2\n' ); [m,n,p]=size(weights_conv2); fprintf(FID,'长度和通道 %d %d\n',m,p );%有多少个 for j=1:p weights_conv2_p = weights_conv2(:,:,j); for i=1:m fprintf(FID, '%f \n',weights_conv2_p(i,1)); % end end %-------------------------------------- %weights_conv3 fprintf(FID,'weights_conv3\n' ); [m,n,p]=size(weights_conv3); fprintf(FID,'长度和宽度 %d %d\n',m,n );%有多少个 for j=1:m for i=1:n fprintf(FID, '%f \n',weights_conv3(j,i)); % end end fclose(FID); %---------------------------------------
model_x3.txt 中的数据:
biases_conv1 长度 64 -0.002024 -0.083690 -0.021551 ... (省略,下同) -0.073157 -0.012042 0.040996 -0.003123 biases_conv2 长度 32 -0.001080 -0.006114 -0.007997 ... biases_conv3 长度 1 0.028888 weights_conv1 长度和宽度 81 64 ... 0.102138 weights_conv2 长度和通道 64 32 0.215097 ... 0.161985 0.108080 weights_conv3 长度和宽度 32 25 -0.015818 ... 0.010603 -0.005007 -0.005743 0.011435 (共8141行)在程序中再导入数据作为卷积核数据,后面用到时再说吧。