2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Вопрос по matlab
Сообщение05.07.2011, 09:34 


05/07/11
22
задали по практике программу позволяющую распознать пространственный объект. например сфера, куб, цилиндр через нейронную сеть
для реализации программы достаточно на выходе получить определённое число например 2 которое и будет обозначать какая фигура была заложена по координатам
например:
P = [(1,1)(1,3)(3,3)(3,1)];
T = 2;
net = newrbe(P,T);
далее необходимо придумать алгоритм позволяющий обучить сеть таким образом, чтобы она знала что введёные координаты являются координатами квадрата
и на выходе мы получим то самое число 2

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 16:04 


23/11/09
130
Если я правильно понял что задача решается для 3d объектов то вам нужно сделать следующее:
1. Необходимо создать функции для генерации этих объектов (сфер, кубов, ...)
2. Нужно сгенерировать обучающих примеров с помощью 1, причем их количество должно быть равно для всех фигур. И слить все в одну выборку.
3. Количество входов сети будет зависеть от количества подаваемых координат. А вот выходов будет... Воспользуемся приемом "один из" и выберем выходов столько сколько фигур.
4. Обучающую выборку подать на сеть для обучения.
5. Использовать сеть для распознавания.

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 17:59 


23/11/09
130
И еще я бы начинал не с радиально базисных функций, а с сигмоидных и простого персептрона скажем 2 слоя по 20 нейронов.

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 18:40 


05/07/11
22
Спасибо за совет
правда я думаю стоит обойтись без визуализации, т.к это будет достаточно сложно сделать
проблема вся ещё в том что я в matlab только начал изучать, читал книгу по нейронным сетям + приложенный к программе help на английском
насчёт персептрона, ведь мы на выходе тогда получим либо 0 либо 1?
и ещё немного не ясно как это все выглядело бы в синтаксисе matlab
насчёт сигмоидальной сети стоит попробовать
ещё вот такой вопрос: про функцию для генерации 3D фигур
т.е мы прописываем например какую либо функцию фигуры, например сферы?

-- 05.07.2011, 19:44 --

Проблема ещё в том что мне до пятницы надо постараться все это дело сдать
Преподаватель в matlabe как бы не очень шарит, поскольку он только на словах говорит как должно бы все выглядеть
ещё над чем ещё думаю, мы на вход по идее подаём массив из координат точек
т.е как бы и должно выглядеть так
P=[(1,1,1(1,3,2)(3,3,3)(3,1,1)(4,1,1)(5,1,1)]
точек наверно потребуется не менее 100
но на деле пока не знаю что из этого может выйти

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:22 


23/11/09
130
Цитата:
ведь мы на выходе тогда получим либо 0 либо 1

Да, причем это для любых сетей, что на вход надо подавать [0..1] что на выходе мы получаем [0..1].
Не ну можно подавать и другое, но тогда сигналы как бы сказать не очень хорошо будут перевариваться передаточными функциями. Будет теряться информация. Ну в общем это можно но ненужно.
Цитата:
насчёт сигмоидальной сети стоит попробовать

Очень даже :wink: потому что персептрон и используется для распознавания образов :-)
Цитата:
ещё вот такой вопрос: про функцию для генерации 3D фигур
т.е мы прописываем например какую либо функцию фигуры, например сферы?

Ну нам надо нагенерировать обучающих примеров, как мы это сделаем?
Надо создать некую функцию для каждой фигуры которая бы генерировала примеры входов и соответствуюший выход.
Так для каждой фигуры.
И еще я бы нагенерировал и неверных примеров и выделил бы еще один выход для для индикации не распознанных фигур.

-- Вт июл 05, 2011 19:31:36 --

Используется синтаксис Matlab M
function ProgramNet2()

p = [0 0 1 1; 0 1 0 1];  % binary input sets
t = [0 1 1 0];           % desired output for each binary pair
% network with 2 hidden nodes.
net=newpr(p,t,[2,1],{'logsig','logsig'},'trainlm');
net.trainParam.epochs = 1000;
net.trainParam.min_grad = 1e-6;
net.trainParam.max_fail = 50;
net = init(net);
[net,tr]=train(net,p,t);

ShowSurfaceOtklik( net, 20, 20 );


Используется синтаксис Matlab M
function ShowSurfaceOtklik(Net,Width,Height)

otkl = zeros(Width+1,Height+1);
for i = 0:Width
    for j = 0:Height
        otkl(i+1,j+1) = sim(Net,[i/Width;j/Height]);
    end
end

surf( otkl );

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:33 


05/07/11
22
а как такой обучающий пример можно засунуть внутрь кода сети?
просто например мы будем иметь уравнение сферы (x-4)$^2$+(y-2)$^2$+(z-1)$^2$=36
просто это как то сложно понять как она сможет обучиться на таком примере

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:34 


23/11/09
130
Вот я как то пробовал юзать сети в матлабе, пример есть думаю разберетесь :-)

ЗЫ: Все в этом матлабе хорошо, но вот тормоза! тоже очень хорошие. Можно обучить только очень простые сети.

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:35 


05/07/11
22
по идее получается нужно взять несколько фигур например сфера, конус, цилиндр, куб и для каждой по 1 примеру привести в виде уравнения?

-- 05.07.2011, 20:37 --

logout2d в сообщении #465486 писал(а):
Все в этом матлабе хорошо, но вот тормоза! тоже очень хорошие. Можно обучить только очень простые сети.

такая вот беда)
какой нибудь простенький пример найти не проблема
а что то более серьёзное пока никак)

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:38 


23/11/09
130
Ну по порядку :-)
train(net,p,t)
p - это обучающие выборки входов
t - это обучающие выборки выходов
Необходимо нагенерировать случайных координат, причем чтобы они соответствовали фигуре, а так же указывать правильную выборку выходов.
По этим примерам сеть и обучается.
Я бы начал с 200 примеров для каждой фигуры + 600 неверных

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:39 


05/07/11
22
200 примеров это ппц))
и каждый нужно будет прописывать самостоятельно? :o

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:40 


23/11/09
130
Цитата:
по идее получается нужно взять несколько фигур например сфера, конус, цилиндр, куб и для каждой по 1 примеру привести в виде уравнения?

Начало верное, только не по 1 примеру в виде уравнения, а по 200 примеров в виде координат + выходов
Уравнение при этом нам надо при подготовке этих 200 примеров чтобы получать правильные координаты

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:41 


05/07/11
22
а что же мы тогда будем получать на выходе?

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:42 


23/11/09
130
Цитата:
200 примеров это ппц))

Ну в пространстве фигуры могут располагаться как угодно, так что чем больше тем лучше, но недумаю что ваш компьютер сможет переварить в матлабе больше 200.
Цитата:
и каждый нужно будет прописывать самостоятельно? :o

Нет, я и толкую про функцию автоматической генерации, надо рандомно нагенерировать, а чтобы рандом генерил по фигуре нужна формула фигуры

-- Вт июл 05, 2011 19:43:36 --

Цитата:
а что же мы тогда будем получать на выходе?

В процессе обучения ничего!
В процессе обучения нам надо подать входы и соответствующие им выходы, тогда сеть сможет обучиться

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:50 


05/07/11
22
тоетсь тут например если начать с сферы
будем брать её основную формулу (x-x0)2+(y-y0)2+(z-z0)2=r2
центр сферы будет в начале координат
и взять определённый радиус например 5
тогда получится x2+y2+z2=25
и тут уже программа будет генерировать различные координаты
правда как их ещё прописать
типо x=random200;
y=random200;
z=random200;

 Профиль  
                  
 
 Re: Вопрос по matlab
Сообщение05.07.2011, 19:51 


23/11/09
130
Обучающая выборка для XOR будет выглядеть так:
Берем персептрон 2,1 (2 нейрона в первом, 1 выходной)
Входы:
0,0
0,1
1,0
1,1
Выходы
0
1
1
0

Понимаете сети в процессе обучения надо скармливать и входы и выходы одновременно иначе как она поймет :-)

Писал на память, что-то может не соответствовать реальности :-)

-- Вт июл 05, 2011 19:53:36 --

Цитата:
тоетсь тут например если начать с сферы
будем брать её основную формулу (x-x0)2+(y-y0)2+(z-z0)2=r2
центр сферы будет в начале координат
и взять определённый радиус например 5
тогда получится x2+y2+z2=25
и тут уже программа будет генерировать различные координаты
правда как их ещё прописать
типо x=random200;
y=random200;
z=random200;

Ну вы уже близко к пониманию :-)
Но нужно генерировать такие координаты которые бы лежали на этой сфере! причем выход тоже надо паказать сети что это была сфера

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу 1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group