답변:
기능적 인터페이스를 사용합니다.
이 같은:
from keras.layers import Activation, Input, Dense
from keras.models import Model
from keras.layers.merge import Concatenate
input_ = Input(shape=input_shape)
x = input_
x1 = Dense(4, x)
x2 = Dense(4, x)
x3 = Dense(4, x)
x1 = Activation('softmax')(x1)
x2 = Activation('softmax')(x2)
x3 = Activation('softmax')(x3)
x = Concatenate([x1, x2, x3])
model = Model(inputs=input_, outputs=x)
categorical_accuracy
, predict_classes
방법은 더 많은 생각이 필요할 수 있습니다. . .
고유 한 softmax 기능 만 구현하면됩니다. 텐서를 파트로 분할 한 다음 파트 당 개별적으로 softmax를 계산하고 텐서 파트를 연결할 수 있습니다.
def custom_softmax(t):
sh = K.shape(t)
partial_sm = []
for i in range(sh[1] // 4):
partial_sm.append(K.softmax(t[:, i*4:(i+1)*4]))
return K.concatenate(partial_sm)
concatenate
축 인수가 없으면 마지막 축을 통해 연결됩니다 (이 경우 axis = 1).
그런 다음이 활성화 함수를 숨겨진 레이어에 포함 시키거나 그래프에 추가 할 수 있습니다.
Dense(activation=custom_activation)
또는
model.add(Activation(custom_activation))
또한 새로운 비용 함수를 정의해야합니다.