마지막 엔트로피에서 sigmod
활성화와 함께 이진 교차 엔트로피 손실을 사용해야하며 반대 예측을 심각하게 부과합니다. 산출물이 1 핫 코드이고 예상 값의 합이 1이되어야한다는 점을 고려하지 않습니다. 그러나 잘못 예측하면 모델을 심각하게 처벌하는 것이 적절하게 분류되는 것을 배웁니다.
이제는 하나의 핫 코드를 시행하려면 범주 간 교차 엔트로피를 사용하여 softmax
활성화를 사용하십시오. 이것이 당신이 사용해야하는 것입니다.
이제 Keras는 각 픽셀에서 softmax를 지원하지 않으므로 문제는 softmax
입니다. 대략가는
가장 쉬운 방법은 (7 n_rows, n_cols) (* n_rows n_cols 7) 층을 사용 Reshape
로 바꿀 다음 Permute
층을 사용하고 사이즈의 순열이다. 그런 다음 softmax
활성화 계층을 추가하고 교차 복사 손실을 사용할 수 있습니다. 데이터도 적절하게 재구성해야합니다.
def depth_softmax(matrix):
sigmoid = lambda x: 1/(1 + K.exp(-x))
sigmoided_matrix = sigmoid(matrix)
softmax_matrix = sigmoided_matrix/K.sum(sigmoided_matrix, axis=0)
return softmax_matrix
및 람다 층으로 사용 : tf
image_dim_ordering
후 사용
model.add(Deconvolution2D(7, 1, 1, border_mode='same', output_shape=(7,n_rows,n_cols)))
model.add(Permute(2,3,1))
model.add(BatchNormalization())
model.add(Lambda(depth_softmax))
경우이 방법을 수행 할 수 있습니다
그렇게하는 다른 방법은 깊이 softmax를 구현하는 것 Permute
레이어가 있습니다.
자세한 내용은 here을 참조하십시오.
매우 자세히 답변 해 주셔서 감사합니다. 나는 모양을 바꿔서 softmax와 categorical cross-entropy로 갔다. 속도 나 최종 정확도와 관련하여 두 가지 방법간에 상당한 성능 차이가있을 것으로 기대하십니까? 다시 한 번 감사드립니다! – TSW
본인은이 시나리오를 직접 작성하지 않았지만 두 가지를 모두 확인할 수 있습니다. 또한 시도 할 수있는 또 다른 방법은 최종 레이어를 '시그 모이 드'및 이진 크로스 엔트로피 손실로 모델을 생성하고 일단 교육이 완료되면 최상위 레이어와 끝을 'softmax'로 대체하고 카테고리 크로스 엔트로피로 재 훈련합니다. 두 번째 교육은 빠르게 수렴하지만 전체적으로 교육 시간이 단축되고 더 나은 정확성을 보일 것입니다. – indraforyou
안녕하세요 indraforyou, 나는 또한 의미 론적 분할 사례를 연구 중입니다. 마스크 된 이미지는 (1, n_rows, n_cols)로 표현됩니다. 이 경우 Sigmoid 및 Binary Cross-Entrophy를 사용할 수 있습니까? 포함될 특정 절차가 있습니까? – user297850