Что еще TensorFlow предлагает керасам?

16

Мне известно, что керас служит высокоуровневым интерфейсом для TensorFlow.

Но мне кажется, что keras может выполнять множество функций самостоятельно (ввод данных, создание моделей, обучение, оценка).

Кроме того, некоторые функции TensorFlow могут быть перенесены непосредственно на кера (например, можно использовать метрику tf или функцию потерь в кера).

Мой вопрос: что предлагает TensorFlow, который не может быть воспроизведен в керасе?

Хавьер
источник

Ответы:

15

Платформы глубокого обучения работают на 2 уровнях абстракции:

  • Нижний уровень . Здесь находятся такие фреймворки, как Tensorflow, MXNet, Theano и PyTorch. Это уровень, на котором выполняются математические операции, такие как умножение обобщенной матрицы на матрицу, и примитивы нейронной сети, такие как сверточные операции.
  • Более высокий уровень : здесь находятся каркасы, подобные Керасу. На этом уровне примитивы нижнего уровня используются для реализации абстракции нейронной сети, такие как уровни и модели. Как правило, на этом уровне также реализованы другие полезные API, такие как сохранение модели и обучение модели.

Вы не можете сравнивать Keras и TensorFlow, потому что они находятся на разных уровнях абстракции. Я также хочу воспользоваться этой возможностью, чтобы поделиться своим опытом использования Keras:

  • Я не согласен с тем, что Keras полезен только для основной работы по глубокому обучению. Keras - это прекрасно написанный API. Функциональная природа API полностью вам помогает и избавляет от более экзотических приложений. Keras не блокирует доступ к фреймворкам более низкого уровня.
  • Keras приводит к гораздо более читабельному и лаконичному коду.
  • Модель Keras API-интерфейсы сериализации / десериализации, обратные вызовы и потоковая передача данных с использованием генераторов Python очень развиты.
  • Keras был объявлен официальной абстракцией высокого уровня для TensorFlow.
Китти
источник
9

Если вы используете TensorFlow в качестве бэкенда в кератах, они более или менее имеют одинаковую функциональность. Через keras.backendвас есть доступ к функциям TensorFlow, а через tf.kerasвас у вас есть доступ ко всему API Keras через TensorFlow.

Поскольку дело обстоит именно так, я предлагаю вам придерживаться керас, и если вы обнаружите, что чего-то не хватает (например, метрика или функция потерь), вы можете импортировать это через TensorFlow.

TmBrdy
источник
5

Keras, как вы говорите, содержит все функции, но из коробки он работает только на процессоре. Подключая бэкэнд, такой как TensorFlow или CNTK (который я лично предпочитаю), вы разблокируете мощь графического процессора, что может значительно ускорить некоторые рабочие нагрузки ML, особенно рабочие нагрузки DL. Если у вас нет дискретного графического процессора, преимущества минимальны.

В большинстве случаев на практике вы можете просто установить свой бэкэнд и забыть об этом, и работать полностью в Keras, даже поменять свой бэкенд на другой и сравнить производительность. Поэтому нет необходимости изучать специфику TF, если вы не хотите писать код непосредственно на более низком уровне.

Gaius
источник
5

Учитывая, что TensorFlow является библиотекой более низкого уровня, чем Keras в целом, вы увидите, что это обеспечивает дополнительную гибкость и улучшенную производительность (хотя и относительно небольшую, в основном зависит от того, как вы пишете свой код). Я бы сказал, что если вы занимаетесь исследованиями или разработкой новых типов нейронных сетей, знание TensorFlow будет очень полезным. Помимо этого, у вас должно быть все в порядке с Keras, хотя понимание того, как работает TensorFlow, может оказаться полезным, если вы используете его в качестве бэкэнда.

Однако некоторое время назад я читал, что Keras и TensorFlow станут более интегрированными, что сделает вашу жизнь намного проще.

Очевидно, это только мое личное мнение, поэтому я хотел бы указать вам на некоторые дополнительные статьи, чтобы вы могли почитать самостоятельно. Это обсуждение Kaggle дает отличный обзор аргументов и когда использовать какой. Средний пост на эту тему.

Феликс ван Доорн
источник
5

У каждого новичка есть этот запрос. Всегда кажется, что Keras решает основные функции, такие как ввод данных, создание моделей, обучение, оценка в меньшем количестве строк кода.

Но затем, когда вы начинаете разрабатывать модель ML с нуля, вы понимаете, что вы можете программировать много математики в NN, а библиотека tenorflow предоставляет множество функциональных возможностей и контроль, делающий эти концепции практичными. Математические аспекты обучения могут быть легко визуализированы и выполнены с использованием NN, выполненного с использованием tf.

abunickabhi
источник