ケラスでニューラルネットワークを作りようとしていましたが、密な層と活性層の間に形状の不一致がある問題がありました。私は明白な何かを欠いていますかTensorflowバックエンドの使用。ケラス:密集層と活性化層の間の形状の不一致
###Setup Keras to create a bidirectional convolutional recurrent NN based on DanQ NN
###See https://github.com/uci-cbcl/DanQ
model = Sequential()
model.add(Conv1D(filters=320,
kernel_size=26,
padding="valid",
activation="relu",
strides=1,
input_shape=(476, 4)
))
model.add(MaxPooling1D(pool_size=13, strides=13))
model.add(Dropout(0.2))
model.add(keras.layers.wrappers.Bidirectional(LSTM(320, return_sequences=True, input_shape=(None, 320))))
model.add(Flatten())
model.add(Dense(input_dim=34*640, units=925))
model.add(Activation('relu'))
model.add(Dense(input_dim=925, units=919))
model.add(Activation('sigmoid'))
print('compiling model')
model.compile(loss='binary_crossentropy', optimizer='rmsprop', class_mode="binary")
print('running at most 60 epochs')
model.fit(x_train, y_train.T, batch_size=100, epochs=60, shuffle=True, verbose=2, validation_split=0.1)
tresults = model.evaluate(x_test, y_test, verbose=2)
print(tresults)
print(model.output_shape)
しかし、私は次のエラーを取得する:
print(x_train.shape)
print(y_train.shape)
(1509, 476, 4)
(1509,)
そして、次のように私のモデルがある
ValueError: Error when checking target: expected activation_48 to have shape (None, 919) but got array with shape (1509, 1)
エラーが使用して、第2の活性層への入力から発信しているように見えますシグモイド活性化。例:
model.add(Dense(input_dim=925, units=919))
model.add(Activation('sigmoid'))
なぜ不一致がありますか?あなたのコードで
緻密なレイヤーでinput_dimとunitsを指定する必要はありません。例。最後の高密度レイヤーは 'model.add(Dense(1、activation = 'sigmoid'))' – DJK
ありがとう!これは不一致の問題を解決するようですが、 'ValueError:無効な引数 'class_modeが' model.fit() 'に由来するTensorflowバックエンドを持つK.functionに渡されるという新しいエラーが表示されます。それについての考えは? –
'model_pile()'に 'class_mode = 'binary''を指定する必要はありません。 – DJK