2014 dxdy logo

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

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





Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Что выбрать для нейросетей?
Сообщение17.03.2017, 01:33 


15/01/12
137
Сейчас пользуюсь Matlab, но он, судя по отзывам, достаточно медленный и слаборазвивающийся.
Пока использую CPU, но собираюсь также подключать к работе GPU.
Критерии: удобство использования, скорость, а также возможность использовать при необходимости навыки работы с полученным средством для трудоустройства.
Что посоветуете?

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение17.03.2017, 01:39 
Аватара пользователя


11/06/12
6828
Минск
Намедни вышла Wolfram Mathematica 11.1. Говорят, прибавилось много интересующего функционала.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение17.03.2017, 08:29 
Аватара пользователя


11/06/12
6828
Минск
Пршпрщн, пропустил слово. Имел в виду именно интересующий вас функционал: всякое, связанное с нейросетями (вообще он появился в версии 11.0 и развивается).

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение17.03.2017, 09:48 


26/05/14
374
Посмотрите на Керас https://keras.io/. Сверху интерфейс пригодный для экспериментов. Снизу TensorFlow - один из промышленных стандартов.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение18.03.2017, 04:09 


15/01/12
137
Спасибо всем отписавшимся.
Хотелось бы поинтересоваться, где искать вакансии, в которых востребованы знания keras и Wolfram?

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение18.03.2017, 11:05 


11/12/16
714
Хотелось бы поинтересоваться, где искать вакансии, в которых востребованы знания Word и Excel

keras и Wolfram - это всего лишь инструменты.
Есть, например, и такой, от рязанских товарищей. Кстати, в какой-то год (не помню точно какой, но недавно) на их платформе было сделано больше всех проектов по анализу данных в России.
И нужно понимать, что анализ данных не сводится только к нейронным сетям.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение25.03.2017, 19:23 


15/01/12
137
slavav в сообщении #1201100 писал(а):
Посмотрите на Керас https://keras.io/. Сверху интерфейс пригодный для экспериментов. Снизу TensorFlow - один из промышленных стандартов.

По-моему, можно и theano вместо tensorflow поставить.
Кстати, может кто-нибудь поделиться кодом для простых нейросетей? Всё, что в инете нашёл, не устраивает.
Как-то медленно обучение сетей проходит, на Матлабе раз в 10 быстрее.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение25.03.2017, 19:43 


26/05/14
374
Igor_Dmitriev в сообщении #1203465 писал(а):
По-моему, можно и theano вместо tensorflow поставить.
Можно поставить Theano. Идея в том чтобы не думать что под капотом и работать на самом высоком уровне.
Igor_Dmitriev в сообщении #1203465 писал(а):
Кстати, может кто-нибудь поделиться кодом для простых нейросетей? Всё, что в инете нашёл, не устраивает.
Вопрос плохо поставлен. Всё равно, что просить код для программы вообще. Структура сети подбирается под задачу. Без знания задачи помочь нельзя.
Igor_Dmitriev в сообщении #1203465 писал(а):
Как-то медленно обучение сетей проходит, на Матлабе раз в 10 быстрее.
Почему тогда не использовать MATLAB?
Разница в скорости обучения, скорее всего, обусловлена разными структурами сетей. Вы их сравнивали? Или вы используете разные оптимизаторы?

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение26.03.2017, 01:44 


15/01/12
137
Потому что рассматриваю возможность перехода на другие инструменты по причинам, указанным в первом сообщении.
Пока что использую пробную простейшую архитектуру, чтобы вообще разобраться, что к чему.
Даже такой код для XOR работает медленно (2-3 секунды!), в матлаб намного быстрее. Скорее всего, дело в каких-то настройках. Если надо, чтобы ничего не печаталось, то в предпоследней строке должно быть
Используется синтаксис Python
verbose=0


код: [ скачать ] [ спрятать ]
Используется синтаксис Python
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense
import time

# the four different states of the XOR gate
training_data = np.array([[0,0],[0,1],[1,0],[1,1]], "float32")

# the four expected results in the same order
target_data = np.array([[0],[1],[1],[0]], "float32")

model = Sequential()
model.add(Dense(16, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error',
              optimizer='adam',
              metrics=['binary_accuracy'])
start = time.time()
model.fit(training_data, target_data, nb_epoch=500, verbose=2)
print (time.time() - start)

print model.predict(training_data).round()
 

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение26.03.2017, 02:15 
Заслуженный участник
Аватара пользователя


16/07/14
979
Москва
Простой код в таких фреймворках работает долго, т.к. перед запуском генерируется бинарный код. Попробуйте увеличить в 5 раз число итераций или размер сети - почти наверняка разницы во времени работы не увидите.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение26.03.2017, 03:03 


15/01/12
137
Увеличивал и размеры входной выборки, и число итераций. Кроме того, посмотрите, я измеряю именно время обучения, а не всё подряд.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение26.03.2017, 08:38 
Аватара пользователя


11/06/12
6828
Минск
mihaild в сообщении #1203542 писал(а):
т.к. перед запуском генерируется бинарный код
Нет, здесь и в самом деле какая-то несуразица. Сначала вызывается model.compile(), модель компилируется, а уж затем включается секундомер и вызывается model.fit().

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение26.03.2017, 10:52 


26/05/14
374
Я подумал, что проблема в большом количестве повторений короткого батча. Я склеил батчи и получил такие результаты:
<батч> * <размер батча> -> <время>
500 * 1 -> 0.472
50 * 10 -> 0.198
10 * 50 -> 0.193
1 * 500 -> 0.191
код: [ скачать ] [ спрятать ]
Используется синтаксис Python
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense
import time

nb_epoch = 500
for tiles in [1, 10, 50, 500]:

    # the four different states of the XOR gate
    training_data = np.tile(
        np.array([[0,0],[0,1],[1,0],[1,1]], "float32"),
        (tiles, 1)
    )

    # the four expected results in the same order
    target_data = np.tile(
        np.array([[0],[1],[1],[0]], "float32"),
        (tiles, 1)
    )

    model = Sequential()
    model.add(Dense(16, input_dim=2, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))

    model.compile(
        loss='mean_squared_error',
        optimizer='adam',
        metrics=['binary_accuracy']
    )

    start = time.time()
    model.fit(training_data, target_data, nb_epoch=nb_epoch/tiles, verbose=0)
    print '%d * %d -> %.3f' % (nb_epoch/tiles, tiles, time.time() - start)
 


Второе на что надо обратить внимание это не самая быстрая версия TensorFlow:
Код:
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение26.03.2017, 11:40 


15/01/12
137
Я использую theano, а не tensorflow в качестве основы.

Кстати, не первый раз встречаю batch_size.
Гуглил, но выдавалось только $BatchNormalization$, судя по всему, не связанное с batch_size.
Не могли бы дать ссылку, где бы это разжёвывалось или вкартце объяснить?

 Профиль  
                  
 
 Re: Что выбрать для нейросетей?
Сообщение27.03.2017, 04:42 


15/01/12
137
slavav в сообщении #1203595 писал(а):
Используется синтаксис Python
    model.fit(training_data, target_data, nb_epoch=nb_epoch/tiles, verbose=0)
 

Я так понял, вы уменьшаете число эпох пропорционально размеру выборки?
Это же не даст принципиального сдвига.

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

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



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

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


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

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