Добрый день! Я изучаю машинное обучение по книге «Глубокое обучение. Погружение в мир нейронных сетей». В книге приводятся примеры кода на 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, но мне видится маловероятным, чтобы это помогло. Может, в самом коде есть какие-то ошибки? Заранее спасибо за помощь.
У меня есть план того, как я буду обучаться этой области знаний. Вопрос сейчас лишь в том, как заставить взлететь этот конкретный пример. В сущности, он не столь важен, ведь в книге такие примеры приводятся лишь после того, как вся теоретическая база и все алгоритмы в подробностях разобраны.
Я не критикую, если нравится - изучай как нравится, но имхо если теория по машинному обучению ограничивается нейронными сетями, то это ущербная теория. Вообще, чтобы въехать в нейронки теории нужно не так много. А под конкретные задачи всё равно приходится state-of-the-art в статьях курить.
Ну и наличие примеров кода на tensorflow не очень хорошо о книге говорит.
Вообще, чтобы въехать в нейронки теории нужно не так много.
что и делает их отличным товаром для массового потребителя.
легко освоить, научно и магично одновременно, обещает горы профита при минимальных усилиях, отсутствует технический порог вхождения, можно объяснить и младшекласснику и пенсионеру. настоящая золотая жила! впрочем маркетологи времени зря не теряют, придумали бренд «deep learning», и банчат им на каждом углу
Спасибо, это помогло! Вот уж не думал, что проблема будет лежать в этой области. В книге почему-то не указано рекомендуемое значение параметра, а я не сообразил, что проблема именно в нём ;)
Большое спасибо за рекомендации! Я не утверждаю, что выбранный мною путь - лучший путь, но в данный момент у меня задание от научного руководителя - освоиться с этой книгой, поэтому, сейчас у меня выбора особо нет :) Когда у меня снова будет время на изучение чего-то нового - я обязательно посмотрю в сторону машинного обучения в более широком смысле. А что не так с TensorFlow?
чтобы копировать чужие модели, использовать чужие фреймворки и заниматься эмпирическим подбором параметров - вышки не надо. наверняка в твоем случае hr просто забил место себя, либо своей младшей сестренки-школьницы, которой нужно наработать резюме для поступления в приличный универ
Сам tf - офигенен, но для задачи «вкурить и поиграться» по примерам из книги двухлетней давности его порог входа высоковат. В python'е для такого лучше взять sklearn или keras. На крайняк можно попробовать pytorch или theano.
Все примеры, которые в книге приводятся, даются только после того, как в подробностях разобрано всё то, что в примере происходит. Градиентный спуск, граф вычислений, правило взятия производных (градиента) f(g(x)), где f, g, x - векторы - всё это повторено и свежо в памяти :)
TF - говно упоротое, как и примерно всё, что в последние 5-10 лет продуцирует гугл. Это всратое поделие свои графы компилирует статически, может при этом делать какие угодно сложные оптимизации - а оно работает медленнее, чем PyTorch, и даже памяти умудряется жрать больше. Не говоря о том, что сама статическая компиляция и недоязык-в-языке вместо обычного питона - пиздец идея.