help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

error: sigmf's first argument must be a valid domain


From: ahmedmazari
Subject: error: sigmf's first argument must be a valid domain
Date: Mon, 14 Mar 2016 03:13:26 -0700 (PDT)

Hello;
l just installed successfully the fuzzy logic tool on octave. l tried a
trivial example to determine whether sigmf.m works or not and it works
successfully in this example : 
 x = 0:100; >>> params = [0.3 40]; >>> y1 = sigmf(x, params);

*but when it come to execute the code below it returns me this error  :
 error: sigmf's first argument must be a valid domain
corresponding to this line code 
output = sigmf(W2'*hidden_output, [beta 0]);*

here is my code
train_set =
loadMNISTImages('/home/anelmad/Desktop/TER/mnist_ml2/MNIST_digit_recognition-master/load_data/train-images.idx3-ubyte');
train_label =
loadMNISTLabels('/home/anelmad/Desktop/TER/mnist_ml2/MNIST_digit_recognition-master/load_data/train-labels.idx1-ubyte');
test_set =
loadMNISTImages('/home/anelmad/Desktop/TER/mnist_ml2/MNIST_digit_recognition-master/load_data/t10k-images.idx3-ubyte');
test_label =
loadMNISTLabels('/home/anelmad/Desktop/TER/mnist_ml2/MNIST_digit_recognition-master/load_data/t10k-labels.idx1-ubyte');

% parameter setting
alpha = 0.1; % learning rate
beta = 0.01; % scaling factor for sigmoid function
train_size = size(train_set);
N = train_size(1); % number of training samples
D = train_size(2); % dimension of feature vector
n_hidden = 300; % number of hidden layer units
K = 10; % number of output layer units
% initialize all weights between -1 and 1
W1 = 2*rand(1+D, n_hidden)-1; % weight matrix from input layer to hidden
layer
W2 = 2*rand(1+n_hidden, K)-1; % weight matrix from hidden layer to ouput
layer
max_iter = 100; % number of iterations
Y = eye(K); % output vector 


% training 
for i=1:max_iter
        disp([num2str(i), ' iteration']);
    for j=1:N
        % propagate the input forward through the network
        input_x = [1; train_set(j, :)'];
        hidden_output = [1;sigmf(W1'*input_x, [beta 0])];
        output = sigmf(W2'*hidden_output, [beta 0]);
        % propagate the error backward through the network
        % compute the error of output unit c
        delta_c = (output-Y(:,train_label(j)+1)).*output.*(1-output);
        % compute the error of hidden unit h
        delta_h = (W2*delta_c).*(hidden_output).*(1-hidden_output);
        delta_h = delta_h(2:end);
        % update weight matrix
        W1 = W1 - alpha*(input_x*delta_h');
        W2 = W2 - alpha*(hidden_output*delta_c');
    end
end

% testing 
test_size = size(test_set);
num_correct = 0;
for i=1:test_size(1)
    input_x = [1; test_set(i,:)'];
    hidden_output = [1; sigmf(W1'*input_x, [beta 0])];
    output = sigmf(W2'*hidden_output, [beta 0]);
    [max_unit, max_idx] = max(output);
    if(max_idx == test_label(i)+1)
        num_correct = num_correct + 1;
    end
end
% computing accuracy
accuracy = num_correct/test_size(1);


any help please !!
thank you for your consideration
 Sincerely 






--
View this message in context: 
http://octave.1599824.n4.nabble.com/error-sigmf-s-first-argument-must-be-a-valid-domain-tp4675481.html
Sent from the Octave - General mailing list archive at Nabble.com.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]