Как сделать нейросеть в Delphi
HTML-код
- Опубликовано: 13 сен 2024
- В этом видео я покажу как сделать с нуля нейросеть для распознавания графических образов Fashion MNIST. Расскажу о том как сделать многослойный перцептрон и запрограммировать метод обратного распространения ошибки. Писать проект буду в одной из последних версий Delphi XE10.
Проект на Boosty: boosty.to/tech...
Еще поддержать меня можно тут: www.donational....
Группа в ВК: public1...
музыка в видео:
------------------------------
Track: Back to 1981 - Iaio [Audio Library Release]
Music provided by Audio Library Plus
Watch: • Back to 1981 - Iaio | ...
Free Download / Stream: alplus.io/back...
------------------------------
Мужик, ты куда пропал? Отличный контент, не забрасывай!
Да над одним проектом работаю, не связанным с каналом, но позже может и о нем расскажу, а так не забрасываю, новые видео будут, может даже скоро
Спасибо вам, что не забываете паскаль.
Ого Delphi ещё живой 😳
Давно хотел разобраться в этом вопросе. Супер!! Благодарю за видео.
Спасибо за интересный материал и подробные объяснения!
Отличный ролик, спасибо!🎉
Шикарно! Не знал что на делфи такое можна, ну хотя как бы я узнал если вместо учобы спал!
Класс! Очень качественный урок и лично мне нужный.
👍
Очень хорошее понятное объяснение. Скачал проект, повторил, всё ок! Но потом решил поменять функцию активации с сигмоида на ReLU, но обучение не происходит, и точность остаётся в районе 10%. Вот функции ReLU и DifReLU(для производной), которые я использовал:
function ReLU(x: Single): Single;
begin
if x > 0 then Result := x else Result := 0;
end;
function DifReLU(x: Single): Single;
begin
if x > 0 then Result := 1 else Result := 0;
end;
Тогда я попробовал еще другую функцию активации, говорят крутую:
function Swish(X: Single): Single;
begin
Result := X / (1 + Exp(-X));
end;
function DifSwish(X: Single): Single;//для производной
begin
Result := Swish(X)+ (Swish(X) * (1 - Swish(X)));
end;
Но появилась ошибка floating point overflow. Видимо где-то надо делать какие-то ограничения, но где - не могу понять.
если значение производной оказывается нулевым, то обучение останавливается, для DefReLU должно быть Result:=0.001;
про floating point overflow надо смотреть отдельно, обычно это случается при слишком больших значениях.
Почаще бы ролики
Я извиняюсь, год выдался тяжелым для меня, постараюсь исправится, поглядывайте за каналом постараюсь скоро ролик выложить.
🙏
100500 лайков однозначно!
У меня другой вопрос.. Почему в году 2010 подобного ни кто не показывал(((
Ещё бы пример оптимизации, было бы вообще хорошо.
Или может кто поделиться? что бы обучение было не на одном ядре.
Потому что в 2010 я сам этого не знал )
В видео показана база, если нужна производительность то надо в сторону OpenCL смотреть чтобы считать нейросеть на сотнях и тысячах ядер видеокарты. Там уже вплоть до того что каждый нейрон на отдельном ядре посчитается.
Еще можно сделать функции записи и чтения нейросетей в файл
ну это не сложно, там и рассказывать особо не о чем
не понятно куда писать какой код(
исправьте пожалуйстаа
Like For "Magic"
есть небольшой вопрос по поводу применимости нейросети при анализе совершенных сделок ботом на криптобирже. с нейросетями ни разу не имел дела, но разрозненная информация в сети наталкивает на мысль, что они могут немного упростить задачу в поиске верных настроек бота. из логов удалось получить огромную тучу разных параметров по сделкам. пока не могу понять, что и как использовать. можно ли как-то с Вами связаться? может натолкнёте на здравую мысль.... если возможно ;)
Пишите в группу в ВК, все расскажу )
Хз актуально ли но если правильно понял то тут хватит простого генетического алгоритма
Повторил, вроде все работает. Но чтобы разобраться как оно работает, решил упростить сеть до 1*1. И сделать элемент НЕ. То есть если на входе 0 то на входе 1, и наоборот. Инициализировал массив для тренировки нулями и единицами, а в ответах, соответственно наоборот. И вот такой упрощённый вариант не работает. Могли бы вы привести рабочий пример? Примеры разные в сети есть(2ине, 3или и тп) а вот самого поостого (1 вход и 1 НЕ выход)не могу найти.
Оно и не будет работать. Объясню по простому, чтобы из 0 сделать 1, надо где то эту 1 взять. Поэтому важно иметь дополнительный вход с постоянной единицей. Я во всех проектах так делаю. Для больших сетей это не так критично, а для 1х1 это прям принципиально.
сделай для крестиков-ноликов, там элементарно
Приветствую! Очень интересный контент ты создаешь, узкое и нелегкое направление. Можно ли с тобой связаться, чтобы задать пару вопросов. Имеется конкретная задача с определенными данными, интересует, сможет ли машинное обучение справиться с ней или сделать неплохой результат. Информация нужна для проработки темы на конференцию (нефтяная промышленность)
Здравствуйте, пишите в группу в ВК
А можешь обучить на конкретных примерах? Мне для задач надо.
а в видео не конкретный пример?
I want to learn them. Seems so cool.. But can't understand the russian language. Could you please make them in english?
i have such plans to make videos in English
@@user-ny5rt8sl4u Great! Thank you..
@@user-ny5rt8sl4u
yes, please, make videos of AI written in Delphi - in english please.
Thank you
а почему на 0:22 картинки летают в каком то 3Д мире?? тут какой то смысл заложен или шо
можете про t-SNE, PCA, UMAP почитать, смысл там заложен )
А вообще данные взяты со странички на гите: github.com/zalandoresearch/fashion-mnist
@@user-ny5rt8sl4u почитал про t-SNE, PCA, UMAP , но так и не понял, зачем картинки летают и вращаются
@@КошкинКошкин это пространственное представление набора, в видео это просто сделано для красоты.
Как расписать четыре строчки на питоне в дофига на дельфи...для понимания как работает из нутри полезно но не больше. Тем более пуловер он правильно отгадал а всеравно красный. Те надо еще учить и сколько надо нажать лерн чтобы не переучить
вы видимо не понимаете очень важной вещи - на питоне вы используете библиотеку Keras, Tensor Flow, PyTorch где внутри тоже дофига кода, который кстати на чистом питоне в добавок реализовать невозможно и он написан на С++. У меня на делфи есть библиотека, которая тоже позволяет строчек в пять эту задачу решить, но понятнее как все работает от этого не станет. Обучающие видео для понимания и создаются. Если написано красным - значит не правильно, значит это не Pullover а Coat (свитер и вроде как пиджак). Такая сеть конкретно под данную задачу не переучится и сохранит способность к обобщению. Проблемы могут быть в основном в задачах предсказания и генерации данных. В задачах классификации проблема переобучения не так существенна.
Да. Было бы круто, если б Delphi Embarcadero написали бы TensorFlow и Keras для своей среды. Тоже можно было бы в два клика писать сетки. Но, правда они вроде написали модуль, который позволяет делать вставки на Python, но я его не пообовал.
>> Как расписать четыре строчки на питоне в дофига на дельфи...
Как спалить дата-саентологиста по единственному комментарию.
ничего не понятно
не надо расстраиваться
правильно ли я понимаю, что эта нейросеть будет угадывать только среди этого набора графических ассетов? что если уже обученной нейросети начать скармливать изображения модифицированные но без искажения облика. Где-то штанины или рукава слегка укоротить, где-то дырки добавить или крестики площадью 1-3 кв пкс или цвет. Можно ли этот алгоритм из видео применить на массиве ключевых слов на разных языках, чтобы приводить их к английскому слову, например, для АИ ассистента?
В видео я говорил об этом, нейросеть получает оценку точности не на тех картинках на которых обучается. Для проверки там отдельный набор из 10 тысяч изображений. Для работы с текстом лучше применять технологии Word2Vec, например у Facebook есть технология FastText.
Вот например демонстрация на стриме:
ruclips.net/user/livejrR1VrY1i2s?feature=shares&t=1382
@@user-ny5rt8sl4u спасибо за ответ. а что насчет распознавания слов из промпта для простенького ассистента? допустим в массиве для обучения слова и синонимы на разных языках которые упрощаем в термин. Типа:
1: [Домик-Дом-Домищще-Home-House] = house
2: [Девушка-Девочка-Женщина-Female-Women-Girl] = girl
В итоге из промпта в свободной форме мы должны вычленить ключевые слова.
Слова синонимы это как разные картинки одного вида одежды. А массив для теста - это слова из промпта разделенные запятой или пробелом