長方形の画像について画像認識を行いたいと考えています。
様々なアスペクト比の画像が混在しているため、初めは256×256の画像にリサイズした後に、学習することを行っていました。しかし、精度があまりよくなかったため、元の画像サイズに近い、200×400に画像サイズを統一した後学習を行おうと考えています。しかし、エラーが出てしまいその原因を究明することができません。
ネットワーク構造は基本256×256の画像の学習で使用していたものと同じです。
デバッグできる(ステップ実行できる)環境はありますか。各層の計算が終わったときに、それぞれのシェイプがどうなっているか、確認してください。パラメータから、だんだん小さくなっているともいますが、それは意図通りでしょうか。
アドバイスありがとうございます。お返事遅くなり申し訳ありません。各層の計算が終わったときのシェイプを見てみたのですが初心者なもので、ここからあまりわからなくていろいろ参考書を読み込んでいる途中なのですがまだ解決に至ってはおりません。
ちなみに
print(pool1.data.shape)
print(conv2_3.data.shape)
print(conv3_4.data.shape)
print(conv4_23.data.shape)
print(conv5_1_proj .data.shape)
print(conv5_1.data.shape)
print(conv5_3.data.shape)
でしたところ
(1, 128, 100, 50)
(1, 256, 100, 50)
(1, 512, 100, 50)
(1, 1024, 100, 50)
(1, 2048, 100, 50)
(1, 2048, 100, 50)
(1, 2048, 100, 50)
でした。シェイプは大きくなっているととらえてよいのでしょうか…?調べていると畳み込みのpadding部分が0ではなく1の方がよいのかともおもったのですがうまくいきませんでした。
参考:https://teratail.com/questions/102418
ごめんなさい。エラー文をちゃんと見ていませんでした。
> A batch with no more than one sample has been given to F.batch_normalization. F.batch_normalization will always output a zero tensor for such batches. This could be caused by incorrect configuration in your code (such as running evaluation while chainer.config.train=True), but could also happen in the last batch of training if non-repeating iterator is used.
訓練側の Dataset を、repeat=false で作っていませんか?
A batch with no more than one sample has been given to F.batch_normalization. F.batch_normalization will always output a zero tensor for such batches. This could be caused by incorrect configuration in your code (such as running evaluation while chainer.config.train=True), but could also happen in the last batch of training if non-repeating iterator is used.
ですが、本当は解決しないといけないのですが、バッチサイズを1にしたまま動かしているため出ている警告文だと思います。実行できた場合も出る警告文のため、やはり問題はCNNのどこかで画像サイズが小さくなりすぎて画像がなくなってしまった(?)ことかなと思っています。どこの層でなぜ消えてしまったのかはわからないのですが……
回答1件
あなたの回答
tips
プレビュー