- 36
- 119 254
Triple Distillation
เข้าร่วมเมื่อ 6 มิ.ย. 2021
Многомерные массивы
Многомерные массивы на языке C. Полезный инструмент, когда необходимо работать с массивом плоскостей, рецептивными полями и т.п.
มุมมอง: 225
วีดีโอ
Сеть Кохонена
มุมมอง 4292 หลายเดือนก่อน
Реализация нейросети Кохонена на языке C. Алгоритм обучения сети без учителя. Классификация входных векторов
Простейшая нейросеть. Функция XOR
มุมมอง 8022 หลายเดือนก่อน
Самый простой вариант перцептрона на языке C с комментариями и математическими выкладками относительно обратного распространения ошибки (backpropagation). Сеть обучается вычислению функции исключающего или. В конче ролика можно увидеть графическую иилюстрацию того, как видоизменяется классификация входных параметров сетью в процессе обучения.
Простейшая нейросеть на языке C. Генеральная линия для множества точек
มุมมอง 1.7K3 หลายเดือนก่อน
В этом видео рассмотрим обучение нейронной сети на самом простом примере. В основе лежит упрошенный алгоритм обратного распространения ошибки (метод градиентного спуска).
OpenGL. Обзор сцены с помощью мыши (язык C)
มุมมอง 3833 หลายเดือนก่อน
В этом ролике я подробно расскажу о том, каким образом запрограммировать на языке C воздействие движений мыши на углы поворота камеры. В ходе повествования обсудим тонкости, связанные с координатами наблюдателя в OpenGL, а также алгоритмы перемещения наблюдателя 00:19 Исходники GL Start 14:44 Имя приложения 15:33 Структура 3D-объекта Obj3D 19:00 Матрицы перспективы и обзора 23:50 Движение наблю...
Бинарные деревья (язык C)
มุมมอง 3523 หลายเดือนก่อน
Определение узлов бинарного дерева. Процедуры обхода дерева, добавления узла, удаления и поиска узла. При реализации алгоритмов используется структура "очередь". Текстовая версия материала: @tripledistillation-binarnye-derevya-yazyk-c Группа в ВК: tripledistillation
Просмотр папок на языке C
มุมมอง 8804 หลายเดือนก่อน
Способ просмотра содержимого каталогов с разными режимами отображения. Анализ статуса объектов фаловой системы по структуре stat, значения флагов, права доступа к файлам. Функции ftw и nftw. 00:12 Makefile проекта 01:09 Функция ftw 02:25 Вывод содержимого директории 04:08 Вывод размера файлов и папок 05:13 Флаги в callback функции 06:09 Количество дескрипторов и их роль 08:24 Корректное прерыва...
Стек. Часть 4. Утечка памяти
มุมมอง 2525 หลายเดือนก่อน
Дополнение к материалу о парсере конфигурационных файлов. Исправление ошибки, связанной с утечкой памяти при чтении имен групп параметров.
Как разбить строку на токены? Язык C
มุมมอง 43410 หลายเดือนก่อน
Пример разбиения строки на токены с использованием функции стандартной библиотеки. Некоторые особенности хранения строк показаны с помощью дизассемблирования. notabug.org/vetal/Tokens
Wavefront OBJ в OpenGL на языке C
มุมมอง 26110 หลายเดือนก่อน
Эксперименты с загрузкой Wavefront OBJ файлов в свой проект на языке C. Нюансы отображения и текстурирования моделей Модели: 3d.si.edu/object/3d/alto-saxophone-owned-and-played-charlie-parker:c7c58ff8-fd1f-4cf6-9813-6bca3cd0b8b3 opengameart.org/content/halloween-pumpkin-0 renderpeople.com/free-3d-people/#eluidb2b1d7da Содержание: 00:15 Makefile, исходники 01:55 Откуда скачать OBJ файлы? 02:55 П...
Wavefront Object. Часть 4. Отдельный исходник для чтения файлов
มุมมอง 17611 หลายเดือนก่อน
Создание отдельного модуля на языке C для чтения файлов .obj (3D). 00:26 Обзор первого исходника 05:19 Тест 06:08 Лишний вывод 08:25 Предупреждение компилятора 10:25 marray.c 11:59 Ошибка в директиве 13:22 marray.h 15:46 Makefile 17:02 objmtl.c 30:54 objmtl.h 33:24 objmtl.c 34:15 main.c 36:17 Устраняем ошибки 38:49 Основной исходник
Wavefront Object. Часть 3. Данные для OpenGL VBO и разбиение полигона на треугольники
มุมมอง 15811 หลายเดือนก่อน
Как разбить многоугольник на серию треугольников, сохраняя порядок следования вершин? Каким образом по набору индексов воссоздать структуру вершины для буфера вершин из OpenGL (VBO)? Обо всём этом рассказано в данном видео. Кроме того, показан алгоритм получения серии треугольников для видео "От 2D к 3D на JavaScript. Часть 2"
Wavefront Object. Часть 2. Текстуры, нормали, поверхности
มุมมอง 15211 หลายเดือนก่อน
Продолжение темы чтения файла Wavefront OBJ на C. Формируем массив координат текстур и массив нормалей к поверхности. Изучем способ описания плоскостей, из которых складывается поверхность 3D-объекта.
Wavefront Object. Часть 1. Вершины
มุมมอง 32911 หลายเดือนก่อน
Читаем координаты вершин из файла Wavefront OBJ на языке C. Есть пара слов о динамических массивах и разбиении строк на токены (отдельные слова). 00:28 Makefile 00:44 Wavefront Object 02:00 Аргументы приложения 02:40 Чтение файла 03:45 Токены 06:00 Комментарии 07:12 Динамический массив 10:46 Вершины
Матрицы масштабирования, переноса и поворота
มุมมอง 2.7Kปีที่แล้ว
Матрицы масштабирования, переноса и поворота
Функции обратного вызова (CALLBACK) в языке C
มุมมอง 3.4Kปีที่แล้ว
Функции обратного вызова (CALLBACK) в языке C
Стек. Часть 3. Простой парсер для файлов .ini
มุมมอง 1Kปีที่แล้ว
Стек. Часть 3. Простой парсер для файлов .ini
Стек на языке C. Часть 2. Инструмент для чтения конфигурационных файлов
มุมมอง 1.4Kปีที่แล้ว
Стек на языке C. Часть 2. Инструмент для чтения конфигурационных файлов
OpenGL. Проект-шаблон. Система координат
มุมมอง 6262 ปีที่แล้ว
OpenGL. Проект-шаблон. Система координат
Чтение растровых изображений формата BMP на языке C. 24-битное и 32-битное изображения
มุมมอง 8K2 ปีที่แล้ว
Чтение растровых изображений формата BMP на языке C. 24-битное и 32-битное изображения
А в чем разница использования % и *?
Спасибо за подробное объяснение данной темы.
Вертекс джеометри и фрагмент. Автор ты застрял между двух языков ? Ты на каком языке вещаешь ? Если ты не знал или не учил - Вершинные шейдеры, Геометрические шейдеры фрагмент уж интернациональное слово
А слово "шейдер" вопросов не вызывает, правильно понял? Оно тоже "международное"?) Никто не застрял на этот раз?)))
Хорошей практикой также является работа с float'ами по причине достаточной для большинства задач точности и вдвое меньшего размера чем double, и ещё блочное хранения матриц блоками по 2*2, 4*4, 8*8 и т.д. элементов. Это повышает локальность для попадания в кэш строку, и упрощает транспонирование при умножении.
Интересно. Посоветуйте литературу по этому вопросу, пожалуйста. Если такая имеется
@tripledistillation1755 легко ищется по запросу blocked matrix multiplication. общий смысл такой: матрицы перед умножением делятся на такие блоки, которые помещаются в кэш-строку (64 байта), например 4*4 float. хранение таких подматриц в блоках позволяет перемещаться как по строкам так и по столбцам без промахов кэша в предалах блоков, т.е. не терять производительность на транспонировании одной из матриц, перемещаясь по столбцам при строковом хранении. блоки перемножаются, и результаты складываются, получается быстро
@@tripledistillation1755 блочное представление в памяти матрицы 4*4 с блоками 2*2 будет например таким: 1,2,5,6,3,4,7,8,9,10,13,14,11,12,15,16
Спасибо большое! Все понятно!
Ролик супер, автору спасибо! только новичкам не зайдет
Спасибо, очень емко и доходчиво. Голос просто как у актера дубляжа. Очень приятно заходит материал!
👍(•‿•)👍
Если есть желание поддержать проект: yoomoney.ru/fundraise/16KBTQF4G72.241120
Спасибо
Пожалуйста
Ваше видео помогло относительно мягко вкатится в C, и наконец, понять указатели. Такой чистый код, такая хорошая подача. Спасибо!
Здравствуйте! Подскажите, пожалуйста, а можно ли что-то сделать с тем, что фигуры и игровое поле получаются вытянутыми по вертикали? В моем случае требуемый по заданию размер поля строго фиксированный в соотношении 2:1 вертикаль-горизонталь, и очень сильно заметна вытянутость. Примерно понимаю, что это, кажется, возникает из-за размера символов в строке. Но не до конца уверена. Буду очень благодарна, если подскажете, возможно ли с этим что-то сделать.
Замените вывод в терминал на какое-нибудь другое средство. Если работаете в линукс, то можно найти графическую библиотеку kxl, или, что современнее, SDL. Переписать процедуры рисования блоков. Вы тоже из School21?
👍(•‿•)👍
Подача шикарная. Ждем следующие видео 👍(•‿•)👍
Эксперименты с подачей подтверждают не то, что хотелось бы
Дай ссылку что почитать или посмотреть по нейронкам для самых маленьких :) С нуля.
Аксенов С.В., Новосельцев В.Б. Организация и использова- ние нейронных сетей (методы и технологии)
@@tripledistillation1755 Спасибо!
с таким голосом прям тяга к знаниям идёт xD
Спасибо
Если есть желание поддержать проект: yoomoney.ru/fundraise/16KBTQF4G72.241120
Материал и подача на высшем уровне. Буду ждать новых видео!!
Спасибо. Разные люди смотрят видео с разными целями, поэтому для одних подача на высшем уровне, а для других она - полное ....
А почему функция Е такая странная? Почему не взяли просто | f(x0) - y0 |?
Модуль - это непрерывная, но не дифференцируемая в нуле функция. "E" подобрана так для отражения ошибки в смысле отклонения от требуемого значения, а также для того, чтобы производная имела вид обыкновенной разности без дополнительного множителя
Если есть желание поддержать канал: yoomoney.ru/fundraise/16KBTQF4G72.241120
Если есть желание поддержать канал: yoomoney.ru/fundraise/16KBTQF4G72.241120
Если есть желание поддержать канал: yoomoney.ru/fundraise/16KBTQF4G72.241120
Если есть желание поддержать канал: yoomoney.ru/fundraise/16KBTQF4G72.241120
Если есть желание поддержать проект: yoomoney.ru/fundraise/16KBTQF4G72.241120
Огромное спасибо за супер-материал! С нетерпением жду продолжения а особенно интересует практическое применение! Реальные задачи и решения. Благодарю!!!
Спасибо за внимание и поддержку! Думаю рассмотреть разные типы сетей. Тема интересная, безусловно
Спасибо добрый человек!
Ещё одно пожелание: прикрепляйте, пожалуйста, реквизиты для доната под роликами. Наверняка найдутся те, кто захочет отблагодарить за Ваш труд.
@@tripledistillation1755Для Россий это бусти а для остальных патрион
Спасибо за ролик! Вижу, что пожелания к предыдущему ролику с функцией XOR учтены :)
Супер!!! Очень интересно.
Создан Telegram-канал: t.me/tripledistillation
Вопрос: почему у некоторых изображений сдвиг до пикселей 1000 или 2000, а не 54, и когда сдивгаешь на данное количество то изображение либо портится либо вообще не выводит.
Если речь про объем хедера, который нужно пропустить, чтобы добраться до данных изображения, то всё зависит от параметров, которые в самом хедере представлены. Объем заголовка (хедера) может быть разным
@tripledistillation1755 я когда сдвигаю на на значение смещения которое записано в хедере, допустим 1200, то изображение портится, а если сдвигаю это же изображение на 54 , то все норм, так вот почему в нем по умолчанию записано 1200 а не 54?
Нужно смотреть на вашу структуру для хедера. Возможно, что не учли 4 зарезервированных байта перед смещением на пиксельный массив. Возможно, не учли порядок переменных в структуре (а он важен) или не установили директиву "#pragma pack(1)" и "#pragma pop"
Не ужели я нашел ролик который смог мне дать понять как это работает. Правда я тупенький и ни 1 формулу не понял, но концепт понятен. Спасибо❤
вот тут точно подойдет фраза, ниуя не понятно, но очень интересно😁
Nicely done!
Это сгенерированный голос? Где можно найти именно такой?
Нет, это мой настоящий. Просто с чуть большей громкостью и более интенсивной подачей, скажем так
Вау бро, твоя работа показала мне, что есть люди, которые объясняют тему лучшим способом: показывают реализацию в коде, в чистом и красивом коде (ещё и на моём любимом ЯП в котором нет мусора типо объектов и тп). Респект за реализацию
Спасибо! Я прекрасно помню туториалы с CD-дисков: первый пример - это hello world в консоли, а второй - это оконное приложение с макросами, кучей классов, 5-ю кнопками, 3-мя текстовыми полями и потоками ввода-вывода в файл. А назывался второй пример "strings" (как работать со строками, мол). Неделя ушла, чтобы понять, что работа со строками - это 5 строчек кода в каком-то одном невзрачном методе. Всё остальное было накручено для солидности и красоты
Отличная тема! Увидеть бы реализацию простейшего нейрона с нелинейной функцией активации, и то, как это решает задачу нелинейной классификации.
В литературе обычно присутствует пример линейно неразделимой задачи о функции XOR. Да, в планах есть такое
+, давай еще!
Чудесный голос! Спасибо!
Огонь! На выходных обязательно повторю! Спасибо
то что вы рассказали, не является нейросетью. Это обычная линейная регрессия.
Персептрон с одним входным узлом и смещением, одним выходным узлом с линейной функцией активации не считается нейросетью? "Нейронная сеть представляет собой совокупность нейроподобных элементов, определенным образом соединенных друг с другом и с внешней средой с помощью связей, определяемых весовыми коэффициентами" (Круглов В.В., Борисов В.В. "Искусственные нейронные сети. Теория и практика" 2002 г.). k и b являются весовыми коэффициентами. Но в материале не только линейная функция присутствует.
@tripledistillation1755 у нейрона обязательно должна быть нелинейная функция активации. Если вы сделаете сеть линейных нейронов, то это тоже не будет считаться нейросетью это просто суперпозиция линейной функции.
Строго говоря, да. Тут я с вами согласен, но такой шаг сделан для наглядности. Акцент на алгоритме обучения. В следующем видео функцией активации нейронов будет сигмоид
@@tripledistillation1755 для наглядности можно показать нейрон с пороговой функцией активации, либо с ReLU. Их хоть и сложнее обучать, но легко реализовать, и на них легко показать как нейронная сеть реализует логику исключающего ИЛИ, без которой нейросеть не нейросеть.
Только написал сверху про XOR), затем дошел до вашего комментария. Для пороговой функции и ReLU интересна ситуация с дифференцированием
здравствуйте! очень большое спасибо за этот видеоурок, но у меня возникла проблема и не понимаю почему. вся логика игры работает замечательно но, когда фигусы должны ставиться они не прорисовываются. фигура падает и становится фиолетовой сново, но когда фигура падает на тоже место, то приземляется так словно фигура там присудствует.
Блок присутствует на поле, если он не 0. Посмотрите на процедуру отрисовки поля. Возможно, цвет в вашем коде зависит от конкретного значения в блоке
В тг сообщества не будет?
В планах до текущего момента не было, но поскольку возник такой вопрос, то займусь
Было бы очень хорошо, т.к не у все есть возможность в вк сидеть. А по поводу контента - просто супер, большое спасибо за труд!
t.me/tripledistillation
Спасибо большое за видео. Буду честна - удивляет количество положительных комментариев. Всего лишь один человек сказал, что изложение лишено важных подробностей (и то возлагая ответственность за это на свою неспособность понять, а не на автора видео). По сути никаких пояснений, почему принимается то или иное решение, нет. Я предельно хорошо осознаю, что контент бесплатный: автор никому ничего не обязан объяснять и мог выложить видео даже вовсе без звука. Но в таком случае я совершенно не понимаю, зачем писать в описании видео "для тех, кто хотел бы получить чистую логическую модель игры и разобраться в ней". С возможностью разобраться в данном материале все весьма трудно. Даже просто пояснений в начале видео о том, почему структуры устроены именно так, было бы достаточно.
Спасибо за комментарий. Вы правы, разобраться в материале трудно. Этот ролик, помимо прямого назначения, был снят в рамках своеобразного эксперимента. На канале есть другое видео, вышедшее "в паре" с данным. Это ролик о чтении bmp-файлов. Целью эксперимента было выяснить - какая подача материала лучше, влияют ли так сильно на восприятие слова-паразиты, что будет, если сделать речь слишком "сухой". Показатели удержания аудитории в некотором роде дали мне ответ. Структуры определяются исходя из того, какая информация об объекте нужна. Как можно описать игровое поле, например? Указать длину и ширину, а также массив из блоков, которые расположены на поле. Далее задаем вопрос: "а что такое блок?". Это тоже объект, которому соответствует своя структура. Что в этой структуре должно быть? Если мы поместим туда число, то по его значению можно определить - есть ли блок на поле, какого цвета блок (допустим) и т.д.. Как можно описать фигуру? Фигура, очевидно, состоит из набора блоков. Помимо этого, фигура может перемещаться по полю, следовательно, у нее должны быть координаты в довесок к массиву блоков. Чистая логическая модель - это готовый отдельный исходник со всеми структурами и методами, необходимыми для функционирования игры. Этот исходник можно легко доработать "под себя", а также присоединить его к любому проекту. Как интерпретировать данные структур игровой модели - это уже предмет вашего творчества.
Огромное спасибо, ценный ролик. Если бы такой контент был когда я обучался в университете, обучение было бы гораздо легче
Спасибо за внимание и поддержку
как настроили компрессию на своем микро?
В этот раз Attack: 0.217 ms; Release: 270 ms; Knee: 12 dB; Ratio: 3; Threshold: -12 dBFS; Makeup gain: 0 dB. Есть недочеты? Если есть, то подскажите - что улучшить
@@tripledistillation1755мне кажется, всё отлично
@@tripledistillation1755 дааааа, ппц очень тихоооооооо! На посте если мможно поднавали на +40-50%!
Ок, понял
Отличный ролик! Спасибо! Но подача информации не для новичка.
Пожалуйста. Что в плане подачи могли бы посоветовать?
не, не говнокод, функция содержит один единственный ретурн, чтобы всегда можно было дебажить всё, что вернет ф-я.. нет, не тот случай, ваши проблемы, ставьте дебаг перед каждым моим ретурн'ом.. выравнивание по горизонтали??? о чём вы??? я люблю гусенку, так и водишь глазами влево вправо влево вправо как истинный программист.. мог бы предположить, что некий абстрактный е"аный конь, экономит на том, чтобы помещать команды в тело {}.. if () dolbayeb()l; { // не будет ошибкой } // кроме того, если мне нужно будет расширить команды для if, я буду вынужден вставлять {} скобки за него.. просто потому, что он дол"аёб поленился вставить из сам.. так что, как говорится, очнись, ты гадишь..
???
автор, зачем ты ставишь лишние точку с запятой после каждого закрытия фигурной скобки? 2. Зачем используешь защиту от повторного дублирования в файле tetris.c?
1. Ранее сталкивался с неопределенностью, возникшей из-за этого, поэтому с тех пор так. Конечно же не всегда стоит её ставить. 2. Это стить оформления исходников из книги по Borland С++.
Блин, наконец-то! Знаешь, сколько я перелопатил, чтобы узнать, как грамотно по разным директориям разносить файлы? На удивление только у тебя нашёл толковое объяснение. Все статьи пишут одно и то же, но как будто бы в отрыве от реальности и только для учебных проектов. Спасибо огромное и +100500 в карму! =)