2017-01-05 1 views
1

Недавно я взял курсор Andrew Ng на Coursera. После этого я перешел на Python и использовал Pandas, Numpy, Sklearn для реализации алгоритмов ML. Теперь во время серфинга я наткнулся на tensorFLow и нашел его довольно удивительным, и внедрил этот example, который принимает данные MNIST в качестве входных данных. Но я не уверен, зачем использовать такую ​​библиотеку (TensorFlow)? Мы не проводим параллельных вычислений, так как весы, обновленные в предыдущую эпоху, используются в следующем. ??? Мне сложно найти причину для использования такой библиотеки?Зачем использовать TensorFlow для сверточных нейронных сетей

+0

Библиотеки, такие как Tensorflow и Theano, не предназначены для параллелизма. Одно из основных преимуществ заключается в том, что они компилируют функции для быстрого кода C, и они обеспечивают быстрый способ их дифференциации. –

ответ

2

Есть несколько форм параллелизма, TensorFlow обеспечивает при обучении сверточной нейронной сети (и многих других моделей машинного обучения), в том числе:

  1. Параллельности в рамках отдельных операций (например, tf.nn.conv2d() и tf.matmul()) , Эти операции имеют эффективные параллельные реализации для многоядерных процессоров и графических процессоров, а TensorFlow использует эти реализации везде, где это возможно.

  2. Параллелизм между операциями. TensorFlow использует представление графика потока данных для вашей модели и где есть два узла, которые не связаны ориентированным путем в графе потока данных, они могут выполняться параллельно. Например, модель распознавания начального изображения имеет много параллельных ветвей в своем графике потока данных (см. Рисунок 3 в this paper), и TensorFlow может использовать это для одновременного запуска многих операций. В файле AlexNet paper также описывается, как использовать «параллелизм модели» для параллельного выполнения операций на разных частях модели, а TensorFlow поддерживает это с использованием того же механизма.

  3. Параллелизм между репликами модели. TensorFlow также предназначен для distributed execution. Одна общая схема параллельного обучения («параллелизм данных») включает в себя очертание вашего набора данных через набор идентичных работников, выполнение одного и того же расчета обучения для каждого из этих работников для разных данных и обмен параметрами модели между рабочими.

Кроме того, библиотеки, такие как TensorFlow и Theano, могут выполнять различные оптимизации, когда они могут работать со всем графиком потока вашей модели. Например, они могут устранить общие подвыражения, избежать перекомпоновки постоянных значений и сгенерировать более эффективный скомпилированный код.

0

Возможно, вы сможете найти предварительно искушенные модели в sklearn или других библиотеках, но TensorFlow позволяет очень быстро итеративно настраивать модели машинного обучения. Он также поставляется с a ton of useful functions, который вам придется (и, вероятно, не должен) писать самостоятельно.

Для меня это меньше касается производительности (хотя они, безусловно, заботятся о производительности), а также о быстром изнашивании нейронных сетей.

Смежные вопросы