Not enough input arguments

5 vues (au cours des 30 derniers jours)
Nur Asyikin Abd Jamel
Nur Asyikin Abd Jamel le 25 Oct 2020
Commenté : jikwan Bae le 2 Déc 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

Réponse acceptée

Stephen23
Stephen23 le 25 Oct 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 commentaire
jikwan Bae
jikwan Bae le 2 Déc 2020
it's not test code. run test MnistConvcode then run Matlab.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Live Scripts and Functions dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by