KerasのLambdaレイヤーの引数をループ内で変えるときにハマった話
KerasのLambdaレイヤーはとても便利で、自作の関数ほか、TensorFlowの組み込みの強力な関数もレイヤーとして扱うことができます。しかし、ループごとに引数を変えながらLambdaレイヤーでラップするようなケー […]...
TPUで学習率減衰させる方法
TPUで学習率減衰したいが、TensorFlowのオプティマイザーを使うべきか、tf.kerasのオプティマイザーを使うべきか、あるいはKerasのオプティマイザーを使うべきか非常にややこしいことがあります。TPUで学習 […]...
転移学習でネットワーク内でアップサンプリングする方法(Keras)
転移学習でインプットのサイズを揃えなければいけないことがありますが、これをRAM(CPU)上でやるとメモリが不足することがあります。転移学習の重みをそのまま使い、事前にアップサンプリングレイヤーを差し込む方法を紹介します […]...
Kerasのジェネレーターでサンプルが列挙される順番について
Kerasの(カスタム)ジェネレーターでサンプルがどの順番で呼び出されるか、1ループ終わったあとにどういう処理がなされるのか調べてみました。ジェネレーターを自分で定義するとモデルの表現の幅は広がるものの、バグが起きやすく […]...
keras_preprocessingを使ってお手軽に画像を回転させる方法
Data Augmentationで画像を回転させたいことがあります。画像の回転は一般に「アフィン変換」と呼ばれる操作で、OpenCVやPillowのライブラリを使えば簡単にできるのですが、Numpy配列に対して1から書 […]...
Kerasでメモリ使用量を減らしたかったらmax_queue_sizeを調整しよう
Kerasで大きめの画像を使ったモデルを訓練していると、メモリが足りなくなるということがよくあります。途中処理の変数のデータ型(np.uint8)を変えるのだけではなく、max_queue_sizeの調整をする必要がある […]...
KerasのCallbackを使って継承したImageDataGeneratorに値が渡せるか確かめる
Kerasで前処理の内容をエポックごとに変えたいというケースがたまにあります。これを実装するとなると、CallbackからGeneratorに値を渡すというコードになりますが、これが本当にできるかどうか確かめてみました。 […]...
KerasのModelCheckpointのsave_best_onlyは何を表すのか?
Kerasには「モデルの精度が良くなったときだけ係数を保存する」のに便利なModelCheckpointというクラスがあります。ただこのsave_best_onlyがいまいち公式の解説だとピンとこないので調べてみました。 […]...
Kerasで重みを共有しつつ、必要に応じて入力の位置を変える方法
Kerasで訓練させて、途中から新しく入力を作ってそこからの出力までの値を取りたいということがたまにあります。例えば、Variational Auto Encoderのサンプリングなんかそうです。このあまり書かれていない […]...
Kerasのバックエンドで「○○以上☓☓以下」を計算する方法
Kerasのバックエンド関数を使ったときに「○○以上☓☓以下」を求めたい場合があります。しかし、KerasではAndのような論理演算をすると少し困ることがあります。その方法を解説します。 10×10の行列 0~99の数字 […]...