Nhiều máy ảnh có thể có nhiều chữ mềm trong lớp cuối cùng?


Câu trả lời:


7

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)

2
Tôi không đề nghị bạn thêm giải pháp, nhưng tôi nghĩ việc để lại câu trả lời vì sẽ mang lại ấn tượng rằng công việc xây dựng mô hình của OP sẽ hoàn tất. Nhưng có một lượng công việc bổ sung tương đương để OP thực hiện trong các phần khác của mã nếu họ muốn thực sự đào tạo mô hình. Bạn ít nhất có thể tham khảo yêu cầu đó. Áp dụng tương tự cho câu trả lời khác. . .
Neil Slater

1
@NeilSlater bạn hoàn toàn đúng. Tôi không biết tại sao tôi cần một hàm chi phí khác. Bạn có thể cho tôi biết tại sao điều này là quan trọng?
arthurDent

1
@arthurDent - bởi vì mất entropy nhiều lớp của Keras có thể không được xử lý để đối phó với ba lớp đúng đồng thời trên mỗi ví dụ và việc tách thành các nhóm - lỗi trong một nhóm có thể dẫn đến độ dốc được gán không chính xác cho các đầu ra trong các nhóm khác . Bạn chỉ có thể thử nó và xem những gì sẽ xảy ra. . . nó vẫn có thể hội tụ, nhưng điểm cân bằng có thể không tốt bằng việc có ba mạng hoàn toàn riêng biệt.
Neil Slater

1
y^y

1
sử dụng các số liệu ví dụ categorical_accuracypredict_classesphương pháp có thể cần nhiều suy nghĩ hơn. . .
Neil Slater

5

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.