2014 dxdy logo

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

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




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


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

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


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

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


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

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


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

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


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

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


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

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

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


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

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

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


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

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


15/01/12
196
Потому что рассматриваю возможность перехода на другие инструменты по причинам, указанным в первом сообщении.
Пока что использую пробную простейшую архитектуру, чтобы вообще разобраться, что к чему.
Даже такой код для 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
8458
Цюрих
Простой код в таких фреймворках работает долго, т.к. перед запуском генерируется бинарный код. Попробуйте увеличить в 5 раз число итераций или размер сети - почти наверняка разницы во времени работы не увидите.

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


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

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


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

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


26/05/14
981
Я подумал, что проблема в большом количестве повторений короткого батча. Я склеил батчи и получил такие результаты:
<батч> * <размер батча> -> <время>
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
196
Я использую theano, а не tensorflow в качестве основы.

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

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


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

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

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

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



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

Сейчас этот форум просматривают: Andrey A


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

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