sigmf doesnt' work in octave ?

조회 수: 16 (최근 30일)
MiMad
MiMad 2016년 3월 7일
댓글: Franklin Yu 2017년 2월 1일
hello l get this error when l execute this code :
error: 'sigmf' undefined near line 29 column 28
and sigmf is predefined in octave and matlab as it is mentionned in octave and matlab documentation
% load training set and testing set
clear all;
train_set = loadMNISTImages('/home/anelmad/my_codes/MNIST_digit_recognition-master/load_data/train-images.idx3-ubyte');
train_label = loadMNISTLabels('/home/anelmad/my_codes/MNIST_digit_recognition-master/load_data/train-labels.idx1-ubyte');
test_set = loadMNISTImages('/home/anelmad/my_codes/MNIST_digit_recognition-master/load_data/t10k-images.idx3-ubyte');
test_label = loadMNISTLabels('/home/anelmad/my_codes/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);
or l have to define sigmf ?
Thanks for helps
  댓글 수: 4
Stephen23
Stephen23 2016년 3월 7일
Are you using Octave or MATLAB?
MiMad
MiMad 2016년 3월 7일
l'm using octave

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2016년 3월 7일
  댓글 수: 5
Walter Roberson
Walter Roberson 2016년 3월 14일
The Mathworks Fuzzy Logic Toolbox cannot be used with Octave, not within the terms of the license agreement.
There is an open source Octave Fuzzy Logic Toolkit. If that is what you are using, you should be asking the author or asking in an Octave resource; this forum is a MATLAB resource and Octave is off-topic here.
Franklin Yu
Franklin Yu 2017년 2월 1일
The Octave package is also available in Octave-Forge.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Fuzzy Logic Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by