Предизвикателството този месец е да създам проект за моя местен научен панаир. Проектът трябва да използва невронна мрежа или генетичен алгоритъм и да отговаря на стандарта, необходим за спечелване на конкуренцията.

Първо, съжалявам, че закъснях с един ден в тази публикация. Странно, причината да закъснея е свързана с предизвикателството. Един от наборите от данни на ASL, които използвам, има по една връзка на файл, всички хореографирани в чиста електронна таблица. Не мога да изтегля всеки файл наведнъж, а по-скоро трябва да щракам върху всяка отделна връзка. Доста болка и загуба на време да се прави ръчно, сигурен съм, че ще се съгласите. Това дори не навлиза в изпитанието на сортирането на файловете в папки и превръщането им в рамки за моята невронна мрежа.

За да се справя с този проблем, реших да експортирам връзките към всеки файл в електронната таблица в csv. След това преобразувах окончанията от Windows в Unix с помощта на Dos2Unix. Честно казано, прекарах известно време в отчаяни опити да разбера защо някакъв напълно валиден код не работи. След като търсих онлайн, просто използвах окончания на Windows, които нямаше да работят на Mac.

Сега въоръжен с моя перфектен файл, съдържащ всяка връзка, написах bash скрипт за отваряне на всяка връзка във файла в Chrome. Веднага щом уебсайтът бъде отворен, връзката се изтегля и уеб страницата се затваря. Звучи страхотно на теория.

Първият път, когато стартирах скрипта, стартирах моя bash файл с малко количество (~15%) от връзките, за да проверя дали скриптът наистина работи. Оставих го за час, оставих го да си свърши работата и се върнах към мини набор от данни на моя Mac, за да започна експериментите си.

Използвайки този малък набор от данни, започнах да тествам някои други скриптове, от които се нуждаех за проекта. Например, един скрипт премества всеки файл в съответната му папка въз основа на електронната таблица. Този малък скрипт ми спести десетки часове ръчна работа. Друг скрипт премества 3-тия файл и впоследствие всеки 4-ти файл в тестовия набор, така че получавам добро съотношение. Също така използвам VLC в командния ред, за да превърна всички видеоклипове в 10 изображения за всяка секунда. В края на месеца ще направя всички тези скриптове достъпни с отворен код в github.

Вчера вечерта планирах да седна и да напиша резюме на напредъка си през седмицата. За съжаление, по същото време планирах да стартирам скрипта си, за да изтегля останалите 85% от набора от данни. Chrome отвори стотици прозорци и неизбежно не можах да пиша. Замръзна и се разби. Исках да го оставя да работи за известно време, но в крайна сметка трябваше просто да затворя приложението.

За да се боря с това, планирам да добавя ред към моя for цикъл, за да отварям прозореца само веднъж на всеки 2 секунди, за да предотвратя това. Това означава, че нов прозорец за изтегляне ще се отвори едва след затварянето на предишния.

Играх си и с Keras и Tensorflow. Оптимизирането на параметрите на моята мрежа и тестването на различни архитектури ще бъде основната ми задача отсега нататък, тъй като по-голямата част от работата тази седмица ще бъде обучение на моята невронна мрежа.

Въпреки че сравнявам резултатите си с помощта на конволюционна невронна мрежа, не очаквам това дори да е сред най-добрите резултати, които се надявам да получа. Това е така, защото конволюционната невронна мрежа вижда само това, което е в изображението, което вижда. Това се нарича пространствена разделителна способност.

Хората имат допълнителното предимство на временната разделителна способност, което е начинът, по който изображението се свързва с минали изображения. Вярвам, че архитектура, която може да се възползва от двете функции, ще бъде най-добрата. Залагам на комбинация от времеви и пространствени мрежи, като например конволюционна повтаряща се невронна мрежа.

Както и да е, очаквам с нетърпение да ви кажа резултатите следващата седмица.