Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
7 / 7 / 1
Регистрация: 14.11.2012
Сообщений: 73
1

Обучение нейронной сети

12.10.2014, 15:33. Показов 3737. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите, пожалуйста.
Задание в приложении.
Написал код:
Matlab M
1
2
3
4
5
6
7
8
9
T = [4.7 4.5 4.2; 12.2 3.3 2.7; 9.4 7.5 6.7]'; 
P = [0.0471 0.1041 0.0907];
Pc = num2cell(P); 
Tc = num2cell(T); 
% net = newlin([4 13;4 13;4 13],1); %не знаю, нужна ли эта строчка, вроде и без нее работает
net.trainFcn = 'trains'; 
net.trainParam.epochs = 1000; 
net = train(net,Tc,Pc);
net(Tc)
Программа не работает, выдает ошибку:
Number of inputs does not match net.numInputs.
Все варианты уже перепробовал - ошибка не исчезла
Есть еще такой вариант:
Matlab M
1
2
3
4
5
6
7
T = [4.7 4.5 4.2; 12.2 3.3 2.7; 9.4 7.5 6.7]'; 
P = [0.0471 0.1041 0.0907];
net = newlin([4 13;4 13;4 13],1);
net.trainFcn = 'trains'; 
net.trainParam.epochs = 10; 
net = train(net,T,P);
net(T)
Сеть чему-то обучается, но не тому, что надо

Решение:
Matlab M
1
2
3
4
5
6
7
8
9
10
T{1,1} = [4.7; 4.5; 4.2];
T{1,2} = [12.2; 3.3; 2.7];
T{1,3} = [9.4; 7.5; 6.7]; 
P = [0.0471 0.1041 0.0907];
Pc = num2cell(P); 
net = newlin([4 13;4 13;4 13],1);
net.trainFcn = 'trains'; 
net.trainParam.epochs = 1000; 
net = train(net,T,Pc);
net(T)
Миниатюры
Обучение нейронной сети  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2014, 15:33
Ответы с готовыми решениями:

Обучение нейронной сети
Доброго времени суток, ув. форумчане! Даже не знаю, как объяснить. В общем есть, допустим, n...

Обучение нейронной сети. Как получить график?
Доброго времени суток. В общей сейчас есть так: График зависимости среднеквадратичной погрешности....

Обучение нейронной сети для получения аппроксимирующей модели зависимости
Помогите написать код программы, а то плохо понимаю тему, да и сети в принципе... Задание: По...

Создание нейронной сети
Добрый день) кто может помочь создать нейронную сеть по этой задаче? X1 | X2 | ...

3
7 / 7 / 1
Регистрация: 14.11.2012
Сообщений: 73
03.11.2014, 21:22  [ТС] 2
Добавлено через 13 минут
Здравствуйте. Помогите, пожалуйста, правильно подать данные для обучения НС.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear, clc, close all
%картинки 10*10
a=zeros(10,10);
b=ones(10,10);
%векторы 1*100
char_a = a(:)';
char_b = b(:)';
alphabet=[char_a;char_a;char_a;char_a;char_a;char_a;char_a;char_a;char_a;char_a;
              char_b;char_b;char_b;char_b;char_b;char_b;char_b;char_b;char_b;char_b;]';
data = num2cell(alphabet,[1 20]); 
result=[
           1;1;1;1;1;1;1;1;1;1;
           2;2;2;2;2;2;2;2;2;2;
          ]';
res = num2cell(result);
net=newpnn(data,res); 
net(char_a)
Перепробовал много вариантов, этот - единственный, который matlab принял, но при тестировании( последняя функция), почему-то выдает вектор 1*100, вместо '1' или '2'.

Добавлено через 1 час 22 минуты
Решение:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
clear, clc, close all
a=zeros(10,10); 
a(1:2,3:10)=1; 
a(1:10,1:2)=1; 
a(5:6,3:10)=1; 
a(9:10,3:10)=1; 
char_SH = a(:)'; 
% paint_arr( 10, 10, char_SH', 'c', 1 )
 
a=zeros(10,10); 
a(1:8,3:4)=1; 
a(1:2,5:10)=1; 
a(5:6,5:10)=1; 
a(7:8,1:2)=1; 
char_C = a(:)'; 
%paint_arr( 10, 10, char_C', 'c', 1 )
 
a=zeros(10,10); 
a(1:2,1:1)=1;
a(2:3,2:2)=1;
a(3:4,3:3)=1;
a(8:9,1:1)=1;
a(7:8,2:2)=1; 
a(6:7,3:3)=1; 
a(4:6,4:6)=1;
a(1:2,9:9)=1;
a(2:3,8:8)=1;
a(3:4,7:7)=1;
a(8:9,9:9)=1;
a(7:8,8:8)=1; 
a(6:7,7:7)=1; 
char_X = a(:)'; 
% paint_arr( 10, 10, char_X', 'c', 1 )
 
a=zeros(10,10); 
a(1:2,6:10)=1;
a(5:6,1:10)=1;
a(3:4,6:7)=1;
char_CH = a(:)'; 
%paint_arr( 10, 10, char_CH', 'c', 1 )
 
P=[
    char_SH;char_SH;char_SH;char_SH;char_SH;char_SH;char_SH;char_SH;char_SH;char_SH;
    char_C;char_C;char_C;char_C;char_C;char_C;char_C;char_C;char_C;char_C;
    char_X;char_X;char_X;char_X;char_X;char_X;char_X;char_X;char_X;char_X;
    char_CH;char_CH;char_CH;char_CH;char_CH;char_CH;char_CH;char_CH;char_CH;char_CH;      
]';
T=[ones(1,10)*1 ones(1,10)*2 ones(1,10)*3 ones(1,10)*4];
Tv = ind2vec(T);
net=newpnn(P,Tv);
p1=[char_C]';
Y = vec2ind(net(p1))
0
7 / 7 / 1
Регистрация: 14.11.2012
Сообщений: 73
19.11.2014, 18:08  [ТС] 3
Всем привет. Вдруг на этот раз кто-то поможет
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
clear, clc, close all
a=zeros(10,10); 
a(1:2,3:10)=1; 
a(1:10,1:2)=1; 
a(5:6,3:10)=1; 
a(9:10,3:10)=1; 
char_SH = a(:)';
 
a=zeros(10,10); 
a(1:8,3:4)=1; 
a(1:2,5:10)=1; 
a(5:6,5:10)=1; 
a(7:8,1:2)=1; 
char_C = a(:)'; 
 
a=zeros(10,10); 
a(1:2,1:1)=1;
a(2:3,2:2)=1;
a(3:4,3:3)=1;
a(8:9,1:1)=1;
a(7:8,2:2)=1; 
a(6:7,3:3)=1; 
a(4:6,4:6)=1;
a(1:2,9:9)=1;
a(2:3,8:8)=1;
a(3:4,7:7)=1;
a(8:9,9:9)=1;
a(7:8,8:8)=1; 
a(6:7,7:7)=1; 
char_X = a(:)'; 
 
a=zeros(10,10); 
a(1:2,6:10)=1;
a(5:6,1:10)=1;
a(3:4,6:7)=1;
char_CH = a(:)';
% char_SH, char_C, char_X, char_CH - просто массивы 1*100
P = [char_SH; char_C; char_X; char_CH]';
net=newc(P,4);
net.trainParam.epochs = 100; 
net1 = train(net,P);
Сколько ни пытался задавать различные параметры обучения KLR,CLR,trainParam.epochs - всегда рандомные результаты на выходе. Есть предположение, что неправильна эта строка, вместо P может быть что-то другое:
Matlab M
1
net=newc(P,4);
0
7 / 7 / 1
Регистрация: 14.11.2012
Сообщений: 73
22.11.2014, 22:32  [ТС] 4
Цитата Сообщение от Sublimee Посмотреть сообщение
Сколько ни пытался задавать различные параметры обучения KLR,CLR,trainParam.epochs - всегда рандомные результаты на выходе. Есть предположение, что неправильна эта строка, вместо P может быть что-то другое
До меня дошло, что все правильно было написано. Просто каждый раз, когда я обучал сеть - параметры сети формировались по-разному. Выход сети при каждой компиляции необходимо соотнести с буквами в обучающей последовательности. Таким образом, после того как сеть обучена, мы имеем идеальный образ - образ, на котором сеть обучалась. При подаче тестовой последовательности на вход НС теперь я соотношу ее выход с выходом НС на обучающем образе. Функция translate соотносит выход НС при подаче тестовой последовательности с выходом НС при подаче обучающего образа.

Matlab M
1
2
3
4
5
6
7
P = [char_SH; char_C; char_X ;char_CH]';
net=newc(P,4);
net.trainParam.epochs = 100; 
net = train(net,P);
translate(net(P),net(P))
P_test=[char_C; char_SH; char_CH; char_X]';
translate(net(P_test),net(P))
0
22.11.2014, 22:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2014, 22:32
Помогаю со студенческими работами здесь

Реализация нейронной сети
Добрый день. Возможно ли смоделировать такую нейросеть, которая могла бы сравнивать два или более...

Построение нейронной сети
Используя конструктор класса network с параметрами и операторы присваивания для полей и ячеек...

Создание линейной нейронной сети
Нужен пример в GUI matlab создание и реализация линейной нейронной сети

Создание нечеткой нейронной сети
Доброго времени суток. Есть задача, создать нечеткую нейронную сеть средствами matlab. Сеть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru