LINUX.ORG.RU

Тренировочный пример на python с TensorFlow, несовместимость версий

 ,


1

2

Добрый день! Я изучаю машинное обучение по книге «Глубокое обучение. Погружение в мир нейронных сетей». В книге приводятся примеры кода на Python с использованием библиотеки TensorFlow, и я столкнулся с тем, что у меня они не работают так, как надо. Приведён следующий пример: http://dpaste.com/046D84P

Он не запускается, поскольку

  • функция tf.initialize_global_variables() была объявлена deprecated и удалена
  • класс tf.train.GradientDescentOptimizer() требует параметр - скорость обучения learning_rate.

Я внёс в код коррективы: заменил initialize_global_variables() на global_variables_initializer(), добавил параметр 1 для класса GradientDescentOptimizer. Получилось вот что: http://dpaste.com/1QKP7K7 (изменения в строках 21, 17).

Под TensorFlow 1.8 из pip, Python 3.6.5, код не работает: на каждом шаге я вижу:

Эпоха 100: nan, k=nan, b=nan
, где номер эпохи меняется, а вот nan не меняется. В книге была мельком написана фраза: «на данный момент (конец 2016 года)», что натолкнуло меня на мысль поставить как можно более древний TensorFlow. В pip самая ранняя доступная версия - 0.12.1 от 30 декабря 2016. Я вкатил её, но получил абсолютно тот же самый результат: nan вместо ответов. Я не знаю ни Python, ни TensorFlow, и планировал некоторые обрывки знаний по ним подтянуть в ходе разбора примеров из книги (примеров всё равно не так много, смысловое ядро книги - в области математики и теорвера), и, кроме того, мне хотелось бы вживую увидеть результаты, поиграть с параметрами. Подскажите, пожалуйста - в чём может быть проблема, и как мне следует поступить? Я могу попробовать вкатить ещё более древний TensorFlow, но мне видится маловероятным, чтобы это помогло. Может, в самом коде есть какие-то ошибки? Заранее спасибо за помощь.

★★

Последнее исправление: Norong (всего исправлений: 1)
Ответ на: комментарий от ei-grad

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

Norong ★★
() автор топика

Попробуй learning_rate поменьше сделать, nan говорит что модель расходится. 1e-6 должно быть самое то.

phoenix ★★★★
()
Ответ на: комментарий от Norong

Я не критикую, если нравится - изучай как нравится, но имхо если теория по машинному обучению ограничивается нейронными сетями, то это ущербная теория. Вообще, чтобы въехать в нейронки теории нужно не так много. А под конкретные задачи всё равно приходится state-of-the-art в статьях курить.

Ну и наличие примеров кода на tensorflow не очень хорошо о книге говорит.

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)
Ответ на: комментарий от ei-grad

Вообще, чтобы въехать в нейронки теории нужно не так много.

что и делает их отличным товаром для массового потребителя.

легко освоить, научно и магично одновременно, обещает горы профита при минимальных усилиях, отсутствует технический порог вхождения, можно объяснить и младшекласснику и пенсионеру. настоящая золотая жила! впрочем маркетологи времени зря не теряют, придумали бренд «deep learning», и банчат им на каждом углу

anonymous
()
Ответ на: комментарий от anonymous

Yep, я о том же, только тогда не понятно нафига нужно копаться в устаревших примерах под tf?

ei-grad ★★★★★
()
Ответ на: комментарий от ei-grad

А на вакансию то все равно шиш наверно устроишься, что бы как следует отработать навыки, там везде требуют высшее математическое

anonymous
()
Ответ на: комментарий от icefreeze

Прямой ссылки у меня нет. Есть на рутрекере, ищется по запросу «глубокое обучение», серия «библиотека программиста»

Norong ★★
() автор топика
Ответ на: комментарий от phoenix

Спасибо, это помогло! Вот уж не думал, что проблема будет лежать в этой области. В книге почему-то не указано рекомендуемое значение параметра, а я не сообразил, что проблема именно в нём ;)

Norong ★★
() автор топика
Ответ на: комментарий от ei-grad

Большое спасибо за рекомендации! Я не утверждаю, что выбранный мною путь - лучший путь, но в данный момент у меня задание от научного руководителя - освоиться с этой книгой, поэтому, сейчас у меня выбора особо нет :) Когда у меня снова будет время на изучение чего-то нового - я обязательно посмотрю в сторону машинного обучения в более широком смысле. А что не так с TensorFlow?

Norong ★★
() автор топика
Ответ на: комментарий от anonymous

чтобы копировать чужие модели, использовать чужие фреймворки и заниматься эмпирическим подбором параметров - вышки не надо. наверняка в твоем случае hr просто забил место себя, либо своей младшей сестренки-школьницы, которой нужно наработать резюме для поступления в приличный универ

anonymous
()
Ответ на: комментарий от slapin

Сам tf - офигенен, но для задачи «вкурить и поиграться» по примерам из книги двухлетней давности его порог входа высоковат. В python'е для такого лучше взять sklearn или keras. На крайняк можно попробовать pytorch или theano.

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)
Ответ на: комментарий от anonymous

Высшее математическое нужно если не ограничиваться нейросетями, а нормально углубляться в машинное обучение.

ei-grad ★★★★★
()
Ответ на: комментарий от ei-grad

Примеры на Keras'е там тоже есть

Norong ★★
() автор топика
Ответ на: комментарий от slaykovsky

Все примеры, которые в книге приводятся, даются только после того, как в подробностях разобрано всё то, что в примере происходит. Градиентный спуск, граф вычислений, правило взятия производных (градиента) f(g(x)), где f, g, x - векторы - всё это повторено и свежо в памяти :)

Norong ★★
() автор топика

Потому что надо выкинуть какаху и сразу юзать PyTorch.

anonymous
()
Ответ на: комментарий от ei-grad

Если просто хочется поиграться с нейронными сетями, то лучше возьми keras.

Керас - это такой кривой закос под Torch на TensorFlow. Зачем он нужен, если есть настоящий PyTorch?

anonymous
()
Ответ на: комментарий от ei-grad

tf - офигенен

TF - говно упоротое, как и примерно всё, что в последние 5-10 лет продуцирует гугл. Это всратое поделие свои графы компилирует статически, может при этом делать какие угодно сложные оптимизации - а оно работает медленнее, чем PyTorch, и даже памяти умудряется жрать больше. Не говоря о том, что сама статическая компиляция и недоязык-в-языке вместо обычного питона - пиздец идея.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.