纯C++超分辨率重建SRCNN --改编--在Matlab导出卷积核参数(前奏三)
程序员文章站
2022-03-09 13:06:25
...
这里到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行)
在程序中再导入数据作为卷积核数据,后面用到时再说吧。