TensorFlow の "AttributeError: 'module' object has no attribute 'xxxx'" エラーでつまづいてしまう人のための移行ガイド

  • 35
    いいね
  • 0
    コメント

TensorFlowでディープラーニングを試してみるにあたって、まずは先人たちが公開してくれているスクリプトを動かしてみよう、と思うわけですが、こういうエラーにぶつかってしまいます

  • AttributeError: 'module' object has no attribute 'scalar_summary'
  • AttributeError: 'module' object has no attribute 'merge_all_summaries'
  • AttributeError: 'module' object has no attribute 'SummaryWriter'
  • etc...

「そんな関数はない」と言われてるようですが、恥ずかしながらTensorFlowもPythonもちゃんと勉強しないままにまずはスクリプトを実行してみよう、という状況ですので、ひとつひとつググってStackOverflowの回答を参考にしたりしてたのですが、

どうやらこれは

  • 実行環境:TensorFlow 1.0
  • スクリプト:それ以前のバージョン向けに書かれたもの

という状況で起こっているらしく、それらの修正方法がまとまった公式の移行ガイドを見つけました。

関数のところを抜粋するとこんな感じです。( -> 1.0

  • tf.audio_summary -> `tf.summary.audio
  • tf.contrib.deprecated.histogram_summary -> tf.summary.histogram
  • tf.contrib.deprecated.scalar_summary -> `tf.summary.scalar
  • tf.histogram_summary -> tf.summary.histogram
  • tf.image_summary -> tf.summary.image
  • tf.merge_all_summaries -> tf.summary.merge_all
  • tf.merge_summary -> tf.summary.merge
  • tf.scalar_summary -> tf.summary.scalar
  • tf.train.SummaryWriter -> tf.summary.FileWriter