Soru sorMatlab da yapay sinir ağları eğitimi
mehmetakcay tarafından 5 yıl önce soruldu

Merhaba kolay gelsin.
Yapay sinir ağı eğitimi yapmak istiyorum fakat Matlab da Error: Function definitions are not permitted in this context. hatasını aldım. çözüm için araştırdım fakat çözemedim yardımcı olur musunuz?
 
function [test ts1val] = s1network(input,target)

%S1NETWORK Summary of this function goes here
% Detailed explanation goes here
%training_rate eğitim katsayısı kullanıcı tarafından belirlenmektedir.
s1size=size(input,1);    % girdi verilerimizin boyutu hesaplandı.
training_rate=0.70;
s1train_ratio=round(s1size*training_rate);     % eğitim katsayısı ile çarpılarak eğitim verisi hesaplandı.
s1train=input(1:s1train_ratio,:);             % eğitim için veriler ayrıldı.
validation_rate=0.15;
s1val_ratio=round(s1size*validation_rate);     % validation katsayısı ile çarpılarak validation verisi hesaplandı.
s1v=(s1train_ratio+s1val_ratio);              %validation verisi için eğitim verilerinden sonraki veriler seçildi.
s1val=input(s1train_ratio+1:s1v,:);           %validation verisi için eğitim verilerinden sonraki veriler seçildi.
test_rate=0.15;
s1test_ratio=round(s1size*test_rate); %    test katsayısı ile çarpılarak test verisi hesaplandı.
s1t=input(s1v+1:end,:);                       % test verisi için validation verilerinden sonraki tüm veriler alındı.
ts1train=target(1:s1train_ratio);          % eğitim için hedef çıktıları
ts1val=target(s1train_ratio+1:s1v);      % validation için hedef çıktıları
ts1t=target(s1v+1:end);                    % test için hedef çıktıları
s1train=s1train';
s1val=s1val';
s1t=s1t';
ts1train=ts1train';
ts1val=ts1val';
ts1t=ts1t';
ns1train=mapminmax(s1train);     %eğitim verileri normalize edildi.
ns1val=mapminmax(s1val);        %validation verileri normalize edildi.
ns1t=mapminmax(s1t);              %test verileri normalize edildi.
[nts1train, ps]=mapminmax(ts1train);     % eğitim hedef çıktıları normalize edildi. ps normalize verilerini saklar.(denormalizede lazım)
[nts1val, ps1]=mapminmax(ts1val);     % validation hedef çıktıları normalize edildi.
ns=40;    %nöron sayısı
net=newff(ns1train,ns1ttrain,ns,{},'trainlm');
net.trainParam.lr=lrate;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-15;
net.trainParam.show=NaN;       % eğitim bitmeden sonuçlar gösterilmeyecek
net=train(net,ns1train,nts1train);  %ağ eğitimi yapıldı.
nntest=sim(net,ns1val); % normalize validation girdileri test için kullanıldı.
test=mapminmax('reverse',nntest,ps);% denormalize edildi.
end

6 Cevap
Caglar Yönetici tarafından 5 yıl önce cevaplandı

Hatanın sinir ağlarıyla ilgisi yok.
Hata tam olarak hangi dosyadan ve satırdan geliyor?
Bütün kodu kopyalamak yerine, hatanın gerçekleştiği en küçük kod parçasını elde edebilirseniz tüm taraflar için daha sağlıklı olur.
 

mehmetakcay tarafından 5 yıl önce cevaplandı

function [test ts1val] = s1network(input,target) satırını  command windowa yazdığım zaman geliyor.

Caglar Yönetici tarafından 5 yıl önce cevaplandı

function ifadesiyle başlayan satırda yeni bir fonksiyon oluşturulur.
command window'da bu şekilde yeni fonksiyon oluşturamazsınız.
.m uzantılı bir dosya içine kodunuzu kopyalamanız gerekir.
command window'dan kullanmak icin cagirabilirsiniz.
 

mehmetakcay tarafından 5 yıl önce cevaplandı

s1network.m uzantılı dosyadan kopyalıyorum zaten.

Caglar Yönetici tarafından 5 yıl önce cevaplandı

fonksiyon s1network.m içinde tanımlı, siz command window'da onu sadece çalıştırmaya çalılşıyorsunuz?
o zaman command window'a sadece
[test ts1val] = s1network(input,target)
yazacaksınız.
Baştaki function ifadesi sadece yepyeni bir fonksiyon oluştururken kullanılır.

mehmetakcay tarafından 5 yıl önce cevaplandı

Cevaplarınız için çok teşekkür ederim kolay gelsin iyi çalışmalar…