未定义sigm;未定义flipall;未定义与 'double' 类型的输入参数相对应的函数 'expand'。
最近在实现CNN时,用了github上的一个代码,是用matlab 来实现的。感谢作者的付出,但是我在使用代码训练时,出现了几个小问题,如sigm,expand等。现在在这里对这些问题进行修正,完成代码。未定义sigm这里需要添加一个函数function output = sigm(x)output =1./(1+exp(-x));end2.未定义flipallfunctio...
·
最近在实现CNN时,用了github上的一个代码,是用matlab 来实现的。感谢作者的付出,但是我在使用代码训练时,出现了几个小问题,如sigm,expand等。
现在在这里对这些问题进行修正,完成代码。
- 未定义sigm
这里需要添加一个函数
function output = sigm(x)
output =1./(1+exp(-x));
end
2.未定义flipall
function X=flipall(X)
for dm=1:ndims(X) %矩阵维数
X=flipdim(X,dm); % 矩阵翻转
end
end
3.未定义与 ‘double’ 类型的输入参数相对应的函数 ‘expand’。
这个首先需要知道这个函数的目的是啥,一步一步的调试到这发现,这个expand的目的就是将矩阵扩维,所以直接添加一个函数,命名为expand_cnn(x,y);举个例子
%https://github.com/rasmusbergpalm/DeepLearnToolbox/issues/156
% size(x) =[4 4 50] y=[m n l];
%size(expand_cnn(x,y)) = [4m 4n 50l]
function expand_bp = expand_cnn(x,y)
expand_bp = zeros(size(x,1)*y(1),size(x,2)*y(2),size(x,3)*y(3)); %
test_column = zeros(size(x,1)*y(1),size(x,2)*y(2),size(x,3));;% column operation
test_row = zeros(size(x,1)*y(1),size(x,2),size(x,3)); % row operation
row_row = y(1);
column_column = y(2);
heigh_heigh = y(3);
for n =1: size(x,3)
% row operation
for row = 1:size(x,1)
while row_row>0
test_row(y(1)*row-(row_row-1),:,n) = x(row,:,n);
row_row = row_row-1;
end
row_row = y(1);
end
% column operation
for column = 1:size(x,2)
while column_column>0
test_column(:,(y(2)*column-(column_column-1)),n) = test_row(:,column,n);
column_column = column_column-1;
end
column_column = y(2);
end
% third dimension
while heigh_heigh>0
expand_bp(:,:,y(3)*n-(heigh_heigh-1)) = test_column(:,:,n);
heigh_heigh = heigh_heigh-1;
end
heigh_heigh = y(3);
end
至此所有的小bug都解决了。。。
更多推荐
已为社区贡献2条内容
所有评论(0)