koshian2 / MosaicDeeplearningBook

モザイク除去から学ぶ 最先端のディープラーニング 質問用
18 stars 0 forks source link

Chap3.ipynbの訓練 #2

Closed akemiyamashita closed 4 years ago

akemiyamashita commented 4 years ago

お世話になります. Chap3.ipynbのアニメ顔モザイク除去を試みています. trainsetとtestsetを作成し,Q14のコードを実行したところ次のエラーが出ました.

 36         train_losses = []
 37         for mos, gt in trainset_tpu:

---> 38 train_losses.append(train_on_batch(mos, gt).numpy())

ValueError: Dimensions must be equal, but are 32 and 8 for 'sub' (op: 'Sub') with input shapes: [32,64,64,3], [8,64,64,3].

インプットのshapeが合っていないのだと思いますが,修正方法がわかりません. ここまで解答どおりにできています.

koshian2 commented 4 years ago

@akemiyamashita 最初の軸はサンプル数(ミニバッチサイズ)を表します。なので、

があります。変数名は間違っていないでしょうか? Q13のfrom_tensor_slicesの中身のshapeを確認してみてください。多分、テストデータの配列が訓練データセットに入れられているのではないかなと思います。

Train test splitの返り値の順番も確認してみてください。模範解答を試しに入力したところ正常に動作しました。

akemiyamashita commented 4 years ago

どこかで入力ミスしてる可能性が高いような気がします もう少し調べてみます.ありがとうございました

trainset = tf.data.Dataset.from_tensor_slices((mosaic_train,gt_train)).map(lambda *args:[preprocess(a) for a in args]).shuffle(1024).batch(256).prefetch(buffer_size = tf.data.experimental.AUTOTUNE)

testset = tf.data.Dataset.from_tensor_slices((mosaic_test,gt_test)).map(lambda *args: [preprocess(a) for a in args]).batch(256).prefetch(buffer_size = tf.data.experimental.AUTOTUNE)

train_test_split print(gt_train.shape, gt_test.shape) print(mosaic_train.shape, mosaic_test.shape) (48650, 64, 64, 3) (8586, 64, 64, 3) (48650, 64, 64, 3) (8586, 64, 64, 3)