私は列車とテストに分割された1つのデータセット(MNIST btw)を持っていますが、どちらもまったく同じ形状です。私は列車の部分で畳み込みオートエンコーダーを訓練し、fit()関数呼び出しで以下に示すようにバリデーションのために他のものを使用します。損失が得るとき、私は、最初のエポックの後、それらを使用する場合Kerasモデルのfit()関数に有効な検証データの形状ミスマッチ?
は、コードが(列データのすなわち、鉄道模型と良い結果を提供します)完璧に動作し、私はvalidation_data=(x_test,x_test)
を削除しかし、私はvalidation_dataを使用する必要がある場合は、問題があります列車データで計算され、テストデータの計算が必要な場合は、エラーが表示されます。
Epoch 1/5 896/1000 [=========================>....] - ETA: 0s - loss: 0.6677--------------------------------------------------------------------------- InvalidArgumentError Traceback (most recent call last)
InvalidArgumentError: Tensor must be 4-D with last dim 1, 3, or 4, not [1,3,3,8,8,1] [[Node: conv2d_3/kernel_0_1 = ImageSummary[T=DT_FLOAT, bad_color=Tensor, max_images=3
どのように解決できますか?
(x_train, _), (x_test, _) = mnist.load_data()
print("+++++++++++++++shape of x_train " , x_train.shape)
x_train = x_train.astype('float32')/255.
x_test = x_test.astype('float32')/255.
# adapt this if using `channels_first` image data format
x_train = np.reshape(x_train, (len(x_train), 28, 28, 1))
# adapt this if using `channels_first` image data format
x_test = np.reshape(x_test, (len(x_test), 28, 28, 1))
#TODO remove after i have solved the problem with the dim mismatch when using the validation dataset
x_train = x_train[range(1000),:,:,:]
x_test = x_test[range(1000),:,:,:]
# execute this in terminal to start tensorboard and let it watch the given logfile
# tensorboard --logdir=/tmp/autoencoder
tensorboardPath = os.path.join(os.getcwd(),"tensorboard")
tensorBoard = TensorBoard(log_dir=tensorboardPath,write_graph=True,write_images=True,histogram_freq=1, embeddings_freq=1, embeddings_layer_names=None)
checkpointer = ModelCheckpoint(filepath=os.path.join(os.getcwd(),"tensorboard"), verbose=1, save_best_only=True)
autoencoder.fit(x_train, x_train,
epochs=5,
batch_size=128,
shuffle=True,
validation_data=(x_test,x_test),
callbacks=[tensorBoard, checkpointer])`