Not enough input arguments

6 visualizaciones (últimos 30 días)
Nur Asyikin Abd Jamel
Nur Asyikin Abd Jamel el 25 de Oct. de 2020
Comentada: jikwan Bae el 2 de Dic. de 2020
Why is it said not enough input arguments at momentum1 = zeros(size(W1)); ?
function [W1, W5, Wo] = MnistConv(W1, W5, Wo, X, D)
alpha = 0.01;
beta = 0.95;
momentum1 = zeros(size(W1));
momentum5 = zeros(size(W5));
momentumo = zeros(size(Wo));
N = length(D);
bsize = 100;
blist = 1:bsize:(N-bsize+1);
for batch = 1:length(blist)
dW1 = zeros(size(W1));
dW5 = zeros(size(W5));
dWo = zeros(size(Wo));
begin = blist(batch);
for k = begin:begin+bsize-1
x = X(:, :, k);
y1 = Conv(x, W1);
y2 = ReLU(y1);
y3 = Pool(y2);
y4 = reshape(y3, [],1);
v5 = W5*y4;
y5 = ReLU(v5);
v = Wo*y5;
y = Softmax(v);
d = zeros(10, 1);
d(sub2ind(size(d), D(k), 1)) = 1;
e = d - y;
delta = e;
e5 = Wo' * delta;
delta5= (y5 > 0).* e5;
e4 = W5' * delta5;
e3 = reshape(e4, size(y3));
e2 = zeros(size(y2));
W3 = ones(size(y2)) / (2*2);
for c = 1:20
e2(:, :,c) = kron(e3(:, :, c), ones([2 2])) .*W3(:, :, c);
end
delta2 = (y2 > 0) .* e2;
delta1_x = zeros(size(W1));
for c = 1:20
delta1_x(:, :,c) = conv2(x(:, :), rot90(delta2(:, :,c), 2), 'valid');
end
dW1 = dW1 + delta1_x;
dW5 = dW5 + delta5*y4';
dWo = dWo + delta*y5';
end
dW1 = dW1 / bsize;
dW5 = dW5 / bsize;
dWo = dWo / bsize;
momentum1 = alpha*dW1 + beta*momentum1;
W1 = W1 + momentum1;
momentum5 = alpha*dW5 + beta*momentum5;
W5 = W5 + momentum5;
momentumo = alpha*dWo + beta*momentumo;
Wo = Wo + momentumo;
end
end

Respuesta aceptada

Stephen23
Stephen23 el 25 de Oct. de 2020
"Why is it said not enough input arguments at momentum1 = zeros(size(W1)); ?"
Because you called the function without any input arguments (probably by clicking the big greeen "Run" button).
You need to call your function (e.g. from the MATLAB command line) with five input arguments, e,g.:
W1 = 1;
W5 = 2;
Wo = 3;
X = 4;
D = 5;
[W1, W5, Wo] = MnistConv(W1, W5, Wo, X, D)
Of course you will need to define appropriate arrays and values to suit whatever task you are doing, not just copy 1, 2, 3, etc. from my answer. And in future ignore that big green button.
  1 comentario
jikwan Bae
jikwan Bae el 2 de Dic. de 2020
it's not test code. run test MnistConvcode then run Matlab.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Live Scripts and Functions en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by