rokkiの備忘録

地道こそ近道

今日学んだこと#0005

git tag

現在のブランチの最新のコミットにタグ名を追加

git tag -a tag_name -m "comment"

リモートにタグを反映

git push origin tag_name

git reset

最新のコミットを削除

git reset --hard HEAD^ 

commitだけ取り除こうとしたが,新規ファイルであり,hard optionにしていたため,ファイルが完全に削除されてしまい泣いた.

Harmonic Networkの完全理解

論文の精読や先行研究を参照したが,著者のyoutube*1が一番理解できた.一言で表現すると,PoolingによってCNNが移動等価性を実現できているように,各層がcircular harmonic filterの角度と強度を適切に学習することで,CNNで回転等価性を実現する.

Harmonic Networkを実行

python2系で設計されたコードをpython3系の環境で動けるようにした.そのために,以下のバグを取り除いた.

python versionによるエラー

  • urlib2 -> urlib.request
  • xrange -> range*2
  • iteritems -> items*3

その他バグ

  • values type not matched: (int, int, float) -> (int, int, int).
    #Before
    new_shape = tf.concat(axis=0, values=[Ysh[:3],[max_order+1,2],[Ysh[3]/(2*(max_order+1))]])
    #After
    new_shape = tf.concat(axis=0, values=[Ysh[:3],[max_order+1,2],[int(Ysh[3]/(2*(max_order+1)))]])
  • tf.nn.moments: ndarray -> list*4
    #Before
    batch_mean, batch_var = tf.nn.moments(X, np.arange(len(Xsh)-3), name=name+'moments')
    #After
    batch_mean, batch_var = tf.nn.moments(X, list(range(len(Xsh)-3)), name=name+'moments')
  • format error*5
    #Before
    sys.stdout.write('{:d}/{:d}\r'.format(i, data['train_x'].shape[0]/args.batch_size))
    #After
    sys.stdout.write('{}/{}\r'.format(i, data['train_x'].shape[0]/args.batch_size))

荒ぶるtensorflowを制限する*6

適当に設定してしまうと,GPUを無尽蔵に使ってしまうため,以下のように,GPUを指定する.

    config.gpu_options.allow_growth = False
    config.gpu_options.visible_device_list = "0"