@SEOVirus

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

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

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

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

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

4. Что такое Тензор2д? :)
  • Вопрос задан
  • 387 просмотров
Решения вопроса 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" - еще одна новая парадигма программирования. Так что после императивного подхода надо чутка мозгами поскрипеть.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы