Keras(Tensorflow)でモデルをトレーニングするときの形状エラー

Chidu Murthy

私は機械学習の初心者であり、TensorFlowにKerasを使用してモデルのトレーニングを把握するのが難しいと感じています。TensorFlowを使用して時系列予測を試みています。トレーニングデータとラベルを生成するジェネレーター関数があります。

x_batch, y_batch = next(generator)

print(x_batch.shape)
print(y_batch.shape)

(256, 60, 9)
(256, 60, 3)

次の方法でモデルを作成します。

model = Sequential()
model.add(LSTM(128, input_shape=(None, num_x_signals,), return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())

model.add(LSTM(128, return_sequences=True))
model.add(Dropout(0.1))
model.add(BatchNormalization())

model.add(LSTM(128))
model.add(Dropout(0.2))
model.add(BatchNormalization())

model.add(Dense(32, activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(num_y_signals, activation='relu'))

opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6)

# Compile model
model.compile(
    loss='sparse_categorical_crossentropy',
    optimizer=opt,
    metrics=['accuracy']
)

私のモデルの概要は次のようになります。

    model.summary()
  _________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_19 (LSTM)               (None, None, 128)         70656     
_________________________________________________________________
dropout_23 (Dropout)         (None, None, 128)         0         
_________________________________________________________________
batch_normalization_18 (Batc (None, None, 128)         512       
_________________________________________________________________
lstm_20 (LSTM)               (None, None, 128)         131584    
_________________________________________________________________
dropout_24 (Dropout)         (None, None, 128)         0         
_________________________________________________________________
batch_normalization_19 (Batc (None, None, 128)         512       
_________________________________________________________________
lstm_21 (LSTM)               (None, 128)               131584    
_________________________________________________________________
dropout_25 (Dropout)         (None, 128)               0         
_________________________________________________________________
batch_normalization_20 (Batc (None, 128)               512       
_________________________________________________________________
dense_12 (Dense)             (None, 32)                4128      
_________________________________________________________________
dropout_26 (Dropout)         (None, 32)                0         
_________________________________________________________________
dense_13 (Dense)             (None, 3)                 99        
=================================================================
Total params: 339,587
Trainable params: 338,819
Non-trainable params: 768

これが私がモデルを訓練しようとする方法です:

tensorboard = TensorBoard(log_dir="logs/{}".format(NAME))

filepath = "RNN_Final-{epoch:02d}-{val_acc:.3f}"  # unique file name that will include the epoch and the validation acc for that epoch
checkpoint = ModelCheckpoint("models/{}.model".format(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')) # saves only the best ones

# Train model
history = model.fit_generator(
    generator=generator,
    epochs=EPOCHS,
    steps_per_epoch=100,      
    validation_data=validation_data,
    callbacks=[tensorboard, checkpoint],
)

# Score model
score = model.evaluate(validation_x, validation_y, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
# Save model
model.save("models/{}".format(NAME))

しかし、モデルをトレーニングしようとすると、次のエラーが発生します。

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-67-f5263636596b> in <module>()
     10     steps_per_epoch=100,
     11     validation_data=validation_data,
---> 12     callbacks=[tensorboard, checkpoint],
     13 )
     14 

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   1777         use_multiprocessing=use_multiprocessing,
   1778         shuffle=shuffle,
-> 1779         initial_epoch=initial_epoch)
   1780 
   1781   def evaluate_generator(self,

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
    134             'or `(val_x, val_y)`. Found: ' + str(validation_data))
    135       val_x, val_y, val_sample_weights = model._standardize_user_data(
--> 136           val_x, val_y, val_sample_weight)
    137       val_data = val_x + val_y + val_sample_weights
    138       if model.uses_learning_phase and not isinstance(K.learning_phase(), int):

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, batch_size, check_steps, steps_name, steps, validation_split)
    915           feed_output_shapes,
    916           check_batch_axis=False,  # Don't enforce the batch size.
--> 917           exception_prefix='target')
    918 
    919       # Generate sample-wise weight values given the `sample_weight` and

C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
    180                            ': expected ' + names[i] + ' to have ' +
    181                            str(len(shape)) + ' dimensions, but got array '
--> 182                            'with shape ' + str(data_shape))
    183         if not check_batch_axis:
    184           data_shape = data_shape[1:]

ValueError: Error when checking target: expected dense_13 to have 2 dimensions, but got array with shape (1, 219, 3)
今日

@yhenonがコメントセクションで述べたように、モデルにはタイムステップごとにいくつかの出力があるreturn_sequences=Trueため、最後のLSTMレイヤーにも使用する必要があります

ただし、タスクが何であるか(つまり、分類または回帰)は明確ではありません。分類タスクの場合は、'categorical_crossentropy''sparse_categorical_crossentropy'現在使用しているのではなく)損失関数'softmax'として使用し、最後の層の活性化関数として使用する必要があります

一方、回帰タスクの場合は、'mse'またはなどの回帰損失を使用'mae'し、出力値に応じて最後の層の活性化関数を適切に設定する必要があります(つまり、出力値'linear'の範囲に負と正の両方が含まれる場合に使用します)数字)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

TensorFlowでニューラルネットワークをトレーニングするときのエラー

分類Dev

TPUトレーニングKerasモデルの場合のみ形状エラー

分類Dev

Pandas-KeyError:Kerasモデルをトレーニングするときの「[] not in index」

分類Dev

TensorFlowを使用してmnistディジットデータセットをトレーニングするときの密な形状エラー

分類Dev

Kerasで重回帰モデルをトレーニングするときの非常に大きな損失値

分類Dev

Keras:値エラー| 事前にトレーニングされたモデルの重みを転送する際の形状の不一致

分類Dev

tensorflow2とkerasを使用してマルチGPUでモデルをトレーニングする方法は?

分類Dev

トレーニング済みのTensorflowモデルをどのようにKerasに変換できますか?

分類Dev

Tensorflow 2.2で複数の入力を使用してKerasモデルをトレーニングする方法は?

分類Dev

事前トレーニング済みの方法で機械学習モデルを使用するKeras、Tensorflow

分類Dev

TensorFlowの事前トレーニング済みモデルの入力形状を変更することは可能ですか?

分類Dev

WMLでモデルをトレーニングするときのセグメンテーション違反エラー

分類Dev

TensorFlowを使用してBatchNormレイヤーでKerasモデルをトレーニングする

分類Dev

トレーニング済みモデルでpredictを呼び出すときのTensorflowのKeyError

分類Dev

Tensorflow Kerasモデルがトレーニング中に奇妙な損失と精度の値を出力するのはなぜですか?

分類Dev

Tensorflow-モデルを作成するときのトレーニングおよび予測モードとはどういう意味ですか?

分類Dev

Tensorflow-モデルを作成するときのトレーニングおよび予測モードとはどういう意味ですか?

分類Dev

CityscapesでTensorFlowのdeeplabモデルをトレーニングする方法は?

分類Dev

Kerasでトレーニング済みモデルの入力形状を設定するにはどうすればよいですか?

分類Dev

KerasモデルでトレーニングされたTensorflow2。*を.onnx形式に変換する方法は?

分類Dev

DjangoでKerasモデルをトレーニングする方法:「gevent._local.local」オブジェクトエラーへの弱い参照

分類Dev

モデルをトレーニングするときに、Kerasでの損失が変わらないのはなぜですか?

分類Dev

Kerasモデルを段階的にトレーニングできますか?

分類Dev

lstmとkerasを使用してモデルをトレーニングする

分類Dev

PythonでTBLPOSTaggerをトレーニングするときのメモリエラー

分類Dev

Rでfrbs.learn()を使用してANFISモデルをトレーニングする際のエラー

分類Dev

KERASモデルのトレーニング可能なパラメーターをカスタマイズする

分類Dev

Kerasモデルをトレーニングするときにスパース配列を使用してラベルを表す

分類Dev

Rでナイーブベイズモデルをトレーニングするときの問題

Related 関連記事

  1. 1

    TensorFlowでニューラルネットワークをトレーニングするときのエラー

  2. 2

    TPUトレーニングKerasモデルの場合のみ形状エラー

  3. 3

    Pandas-KeyError:Kerasモデルをトレーニングするときの「[] not in index」

  4. 4

    TensorFlowを使用してmnistディジットデータセットをトレーニングするときの密な形状エラー

  5. 5

    Kerasで重回帰モデルをトレーニングするときの非常に大きな損失値

  6. 6

    Keras:値エラー| 事前にトレーニングされたモデルの重みを転送する際の形状の不一致

  7. 7

    tensorflow2とkerasを使用してマルチGPUでモデルをトレーニングする方法は?

  8. 8

    トレーニング済みのTensorflowモデルをどのようにKerasに変換できますか?

  9. 9

    Tensorflow 2.2で複数の入力を使用してKerasモデルをトレーニングする方法は?

  10. 10

    事前トレーニング済みの方法で機械学習モデルを使用するKeras、Tensorflow

  11. 11

    TensorFlowの事前トレーニング済みモデルの入力形状を変更することは可能ですか?

  12. 12

    WMLでモデルをトレーニングするときのセグメンテーション違反エラー

  13. 13

    TensorFlowを使用してBatchNormレイヤーでKerasモデルをトレーニングする

  14. 14

    トレーニング済みモデルでpredictを呼び出すときのTensorflowのKeyError

  15. 15

    Tensorflow Kerasモデルがトレーニング中に奇妙な損失と精度の値を出力するのはなぜですか?

  16. 16

    Tensorflow-モデルを作成するときのトレーニングおよび予測モードとはどういう意味ですか?

  17. 17

    Tensorflow-モデルを作成するときのトレーニングおよび予測モードとはどういう意味ですか?

  18. 18

    CityscapesでTensorFlowのdeeplabモデルをトレーニングする方法は?

  19. 19

    Kerasでトレーニング済みモデルの入力形状を設定するにはどうすればよいですか?

  20. 20

    KerasモデルでトレーニングされたTensorflow2。*を.onnx形式に変換する方法は?

  21. 21

    DjangoでKerasモデルをトレーニングする方法:「gevent._local.local」オブジェクトエラーへの弱い参照

  22. 22

    モデルをトレーニングするときに、Kerasでの損失が変わらないのはなぜですか?

  23. 23

    Kerasモデルを段階的にトレーニングできますか?

  24. 24

    lstmとkerasを使用してモデルをトレーニングする

  25. 25

    PythonでTBLPOSTaggerをトレーニングするときのメモリエラー

  26. 26

    Rでfrbs.learn()を使用してANFISモデルをトレーニングする際のエラー

  27. 27

    KERASモデルのトレーニング可能なパラメーターをカスタマイズする

  28. 28

    Kerasモデルをトレーニングするときにスパース配列を使用してラベルを表す

  29. 29

    Rでナイーブベイズモデルをトレーニングするときの問題

ホットタグ

アーカイブ