次の形状のニューラルネット入力をフィードしたいとします。 各トレーニングエントリは、寸法が700x10の2D配列です。合計204のトレーニング項目があります。 ラベル私は緻密層を使用しようとしたサイズ204(バイナリ出力)カスタムテンソルフロー入力またはケラスニューラルネット入力
のわずか1次元配列である:
model = Sequential()
model.add(Dense(300, activation='relu', input_shape=(700, 10)))
model.add(Dense(1, activation='sigmoid'))
しかし、私は、第1の層上にinput_shapeする次のエラー(関連しないを取得してい出力の検証中):
ValueError: Error when checking target: expected dense_2 to have 3 dimensions, but got array with shape (204, 1)
204 - トレーニングデータの量。
スタックトレース:
Kerasコードをデバッグ中に私が見つけた何model.fit(xTrain, yTrain, epochs=4, batch_size=6)
File "keras\models.py", line 867, in fit
initial_epoch=initial_epoch)
File "keras\engine\training.py", line 1522, in fit
batch_size=batch_size)
File "keras\engine\training.py", line 1382, in _standardize_user_data
exception_prefix='target')
File "keras\engine\training.py", line 132, in _standardize_input_data
:
それはトレーニング前に検証中に失敗しました。出力配列を検証します。
ニューラルネットワーク構造によると、最初の密集層は何とか700,1次元出力を生成し、出力はそれに204個の1-d配列しかないので後で失敗します。
どのようにこの問題を解決できますか?私はDense()層の後にFlatten()を追加しようとしましたが、おそらく精度に悪影響を及ぼします。私は700個の配列から1つの点に固有の情報をグループ化したいと思います。
よろしくお願いしますmodel.summary()tipありがとう!ケラスとそれがより徹底的に提供しなければならないものをさらに調査しようとするでしょう – Twisty
データを記述することはできますか?たとえば、700個のベクトルが時間ステップである場合、GRUやLSTMなどの反復ネットワークを使用できます。物理的な長さの場合は、1D畳み込みを使用するのが面白いかもしれません。 –