답변:
내 질문에 대한 답변을 찾았으며 위의 답변을 기반으로하는 코드가 있습니다.
from keras.layers import Input, Dense
from keras.models import Model
from keras.utils import plot_model
A1 = Input(shape=(30,),name='A1')
A2 = Dense(8, activation='relu',name='A2')(A1)
A3 = Dense(30, activation='relu',name='A3')(A2)
B2 = Dense(40, activation='relu',name='B2')(A2)
B3 = Dense(30, activation='relu',name='B3')(B2)
merged = Model(inputs=[A1],outputs=[A3,B3])
plot_model(merged,to_file='demo.png',show_shapes=True)
그리고 내가 원하는 출력 구조는 다음과 같습니다.
Keras에는 함수형 API를 사용하여 모델을 정의하는 유용한 방법이 있습니다. 기능적 API를 사용하면 계층의 비순환 비순환 그래프를 정의하여 완전히 임의의 아키텍처를 구축 할 수 있습니다. 귀하의 예를 고려할 때 :
#A_data = np.zeros((1,30))
#A_labels = np.zeros((1,30))
#B_labels =np.zeros((1,30))
A1 = layers.Input(shape=(30,), name='A_input')
A2 = layers.Dense(8, activation='???')(A1)
A3 = layers.Dense(30, activation='???', name='A_output')(A2)
B2 = layers.Dense(40, activation='???')(A2)
B3 = layers.Dense(30, activation='???', name='B_output')(B2)
## define A
A = models.Model(inputs=A1, outputs=A3)
## define B
B = models.Model(inputs=A1, outputs=B3)
B.compile(optimizer='??',
loss={'B_output': '??'}
)
B.fit({'A_input': A_data},
{'B_output': B_labels},
epochs=??, batch_size=??)
그게 다야! 결과는 다음과 B.summary()
같습니다 . :
Layer (type) Output Shape Param
A_input (InputLayer) (None, 30) 0
_________________________________________________________________
dense_8 (Dense) (None, 8) 248
______________________________________________________________
dense_9 (Dense) (None, 40) 360
_________________________________________________________________
B_output (Dense) (None, 30) 1230
Model
는 InputLayer
객체 여야 합니다. 수신 된 입력 : Tensor. 또한 앞에서 언급했듯이 기능 API를 사용하여 모델 A와 모델 B를 개별적으로 만들었습니다. 필자가 찾고있는 대답은 연결 기능을 사용하는 keras 설명서의 "다중 입력 및 다중 출력 모델"섹션과 관련이 있다고 생각합니다.