Có thể thực hiện mutmax softmaxes trong lớp cuối cùng trong Keras không? Vậy tổng các nút 1-4 = 1; 5-8 = 1; Vân vân.
Tôi có nên đi thiết kế mạng khác không?
Có thể thực hiện mutmax softmaxes trong lớp cuối cùng trong Keras không? Vậy tổng các nút 1-4 = 1; 5-8 = 1; Vân vân.
Tôi có nên đi thiết kế mạng khác không?
Câu trả lời:
Tôi sẽ sử dụng giao diện chức năng.
Một cái gì đó như thế này:
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
và predict_classes
phương pháp có thể cần nhiều suy nghĩ hơn. . .
Có thể chỉ cần thực hiện chức năng softmax của riêng bạn. Bạn có thể tách một tenxơ thành các phần, sau đó tính toán softmax riêng cho từng phần và ghép các phần tenor:
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
không có đối số trục nối qua trục cuối cùng (trong trường hợp trục của chúng tôi = 1).
Sau đó, bạn có thể đưa chức năng kích hoạt này vào một lớp ẩn hoặc thêm nó vào biểu đồ.
Dense(activation=custom_activation)
hoặc là
model.add(Activation(custom_activation))
Bạn cũng cần xác định một hàm chi phí mới.