Keras에서 순차 모델 병합
Nov 02 2020
저는이 두 모델을 프로젝트에 연결하고 싶습니다. 저는이 분야에서 아주 새로운 사람이므로 저를 열심히 판단하지 마십시오. 그래서 여기에 코드가 있습니다.
model2 = Sequential()
model2.add(Dense(10, input_dim=df2_x.shape[1], activation='relu'))
model2.add(Dense(50, input_dim=df2_x.shape[1], activation='relu'))
model2.add(Dense(10, input_dim=df2_x.shape[1], activation='relu'))
model2.add(Dense(1, kernel_initializer='normal'))
model2.add(Dense(df2_y.shape[1],activation='softmax'))
model2.compile(loss='categorical_crossentropy', optimizer='adam')
monitor2 = EarlyStopping(monitor='val_loss', min_delta=1e-3,
patience=5, verbose=1, mode='auto',
restore_best_weights=True)
model2.fit(df2_x_train,df2_y_train,validation_data=(df2_x_test, df2_y_test),
callbacks=[monitor2],verbose=2,epochs=1000)
model = Sequential()
model.add(Dense(10, input_dim=df_x.shape[1], activation='relu'))
model.add(Dense(50, input_dim=df_x.shape[1], activation='relu'))
model.add(Dense(10, input_dim=df_x.shape[1], activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
model.add(Dense(df_y.shape[1],activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
monitor = EarlyStopping(monitor='val_loss', min_delta=1e-3,
patience=5, verbose=1, mode='auto',
restore_best_weights=True)
model.fit(df_x_train,df_y_train,validation_data=(df_x_test, df_y_test),
callbacks=[monitor],verbose=2,epochs=1000)
모델을 얻은 후 예측을하고 싶습니다.
그래서 저는 DOS-portmap 공격과 DOS-UDP 공격을위한 두 개의 데이터 셋을 가지고 있습니다.
무언가를 예측하고 싶다면이 둘을 어떻게 구별 할 수 있습니까?
답변
YosiPramajaya Nov 02 2020 at 12:46
이를 위해 Keras 기능 API를 사용할 수 있습니다. 모델은 기본적으로 레이어와 같고 호출 가능하며 다른 모델에 포함될 수 있습니다.
예를 들어 다음은 두 모델의 결과를 연결하는 매우 단순화 된 버전입니다.
inputs = keras.Input(input_shape)
y_1 = model1(inputs)
y_2 = model2(inputs)
outputs = tf.concat([y_1, y_2], axis=0)
new_model = keras.Model(inputs, outputs)
물론 출력이 원하는 결과인지 확인하고 싶습니다. 따라서 키는 마지막 계층에 있으며 y_1 및 y_2에서 얻은 값으로 수행 할 작업의 종류입니다.
일부는이를 위해 사용자 정의 레이어를 사용하므로이를 사용할 수도 있습니다. Tensorflow 문서에서 Functional API 및 Custom Layer에 대한 더 많은 문서를 찾을 수 있습니다.