@SEOVirus

Кто поможет разобраться с терминологией TensorFlow?

Некоторое время работал с нейронными сетями: многослойки, обучение, бэкпроп, функции активации - всё делал вручную на C++. Теперь работаю с Node.js, решил посмотреть на TensorFlow. Вообще ничего понять не могу :) Я - практик, в теории сильно плаваю, поэтому прошу подсказки у вас.

1. В TensorFlow часто говорят о "моделях". Что они понимают под "моделями"? Насколько понимаю, это натренированная нейронка с оптимальными весами? Не архитектуру сети же они так называют. Или что-то вообще третье?

2. Постоянно речь идёт о каких-то TensorFlow и Keras-моделях, и о том, что их почему-то надо импортировать. Зачем они нужны, что в них такого полезного? Я так понимаю там вообще всё крутится вокруг них :) Я понимаю, что это какая-то штука, которая сильно может упростить жизнь разработчику, но не понимаю что в неё включается, где границы того, на что они способны.

3. Почему-то я не могу найти простых примеров использования TensorFlow для обучения, скажем, задаче XOR, как это часто делают в учебниках. Такое ощущение, что у них всё только и упирается в эти модели, и почему-то не получается найти простейших примеров как создать нейронку с нужным количеством слоёв, функций активации, указанием метода обучения и т.д.
Это вообще возможно для TensorFlow.JS?

4. Что такое Тензор2д? :)
  • Вопрос задан
  • 388 просмотров
Решения вопроса 1
@ivodopyanov
NLP, python, numpy, tensorflow
1. Именно архитектуру. Когда вы писали нейронки руками, то последовательность выполнения операций определялась лично вами и тем порядком команд, который вы написали. Но при этом очень вероятно, что расходование ресурсов было далеко от оптимального. Тем более это может быть важно в случае обучения на GPU, когда программе надо еще управлять памятью GPU - какие данные там держать, а какие уже можно удалить и вернуть в обычную память. Для решения этой проблемы порядок выполнения вычислений в Tensorflow определяется компилятором - программист сначала описывает граф, по которому будут происходить вычисления (та самая модель, у которой может быть несколько входов, несколько выходов, несколько путей прохожения вычислений); потом компилирует его; потом создает сессию Tensorflow и запускает прогон этого графа с какими-то входными данными. Реальные веса нейронной сети существуют лишь в рамках сессии Tensorflow.

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

3. Исходный язык для Tensorflow - это Python, примеры надо на нем смотреть: https://www.tensorflow.org/tutorials/keras/basic_c...

Tensorflow - это вообще пример того, что в последнее время стали называть "differentiable programming" - еще одна новая парадигма программирования. Так что после императивного подхода надо чутка мозгами поскрипеть.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы