Keras/TensorFlow 손실 함수에서 'from_logits=True'는 무엇입니까? PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

Keras/TensorFlow 손실 함수에서 'from_logits=True'는 무엇입니까?

Keras와 같은 딥 러닝 프레임워크는 대중의 진입 장벽을 낮추고 DL 모델 개발을 경험이 없는 사람들에게 민주화합니다. 경험이 없는 사람들은 합리적인 기본값과 단순화된 API에 의존하여 무거운 짐을 지고 괜찮은 결과를 얻을 수 있습니다.

다음과 같은 분류에 Keras 손실 함수를 사용할 때 새로운 딥 러닝 실무자 간에 일반적인 혼동이 발생합니다. CategoricalCrossentropySparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

는 무엇을 의미합니까 from_logits 플래그 참조?

대답은 매우 간단하지만 손실 함수를 사용하여 등급을 매기려는 네트워크의 출력을 살펴봐야 합니다.

Logits 및 SoftMax 확률

짧은 이야기 짧게 :

확률은 정규화됩니다. 즉, [0..1]. 로짓은 정규화되지 않으며 다음 사이의 범위를 가질 수 있습니다. [-inf...+inf].

네트워크의 출력 계층에 따라:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

의 출력 Dense 레이어는 반환:

  • 확률: 출력은 출력을 확률 집합으로 정규화하는 SoftMax 함수를 통해 전달됩니다. n, 모두 합하면 1.
  • 로지츠: n 활성화.

이 오해는 레이어에 활성화를 추가할 수 있는 약식 구문에서 발생할 수 있습니다. 겉으로는 단일 레이어로, 비록 다음의 줄임말일지라도:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

손실 함수는 정규화된 분포(SoftMax 함수를 통해 전달된 출력) 또는 로짓을 예상해야 하는지 여부를 알려야 합니다. 따라서 from_logits 깃발!

해야 할 때 from_logits=참?

네트워크가 출력 확률을 정규화하면 손실 함수가 다음과 같이 설정되어야 합니다. from_logitsFalse, 로짓을 받아들이지 않기 때문입니다. 이것은 또한 대부분의 사람들이 추가하기 때문에 플래그를 수락하는 모든 손실 클래스의 기본값입니다. activation='softmax' 출력 레이어에:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10, activation='softmax') 
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

결과 :

tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
   0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)

이 네트워크는 정규화된 분포를 가져오기 때문에 - 출력을 목표 출력과 비교하고 분류 손실 함수를 통해 등급을 매길 때(적절한 작업에 대해) - 당신은 설정해야 from_logitsFalse, 또는 기본값을 그대로 두십시오.

반면에 네트워크가 출력에 SoftMax를 적용하지 않는 경우:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10)
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

결과 :

tf.Tensor(
[[[-0.06081138  0.04154852  0.00153442  0.0705068  -0.01139916
    0.08506121  0.1211026  -0.10112958 -0.03410497  0.08653068]]], shape=(1, 1, 10), dtype=float32)

당신은 설정해야합니다 from_logitsTrue 손실 함수가 출력을 적절하게 처리하도록 합니다.

언제 출력에 SoftMax를 사용합니까?

대부분의 실무자는 출력에 SoftMax를 적용하여 정규화된 확률 분포를 제공합니다. 이는 많은 경우에 네트워크를 사용하게 될 것이기 때문입니다. 특히 단순화된 교육 자료에서 그렇습니다. 그러나 어떤 경우에는 하지 SoftMax 또는 다른 기능을 적용하기 전에 다른 방식으로 처리하기 위해 출력에 기능을 적용하려고 합니다.

주목할만한 예는 NLP 모델에서 나온 것으로, 실제로 많은 어휘에 대한 확률이 출력 텐서에 존재할 수 있습니다. SoftMax 적용 그들 모두 그리고 탐욕스럽게 얻는 argmax 일반적으로 매우 좋은 결과를 생성하지 않습니다.

그러나 로짓을 관찰하면 Top-K를 추출합니다(여기서 K는 임의의 숫자일 수 있지만 일반적으로 [0...10]), 그런 다음에만 SoftMax를 탑케이 어휘의 가능한 토큰은 분포를 크게 이동시키고 일반적으로 더 현실적인 결과를 생성합니다.

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

이를 Top-K 샘플링이라고 하며 이상적인 전략은 아니지만 일반적으로 욕심 많은 샘플링보다 성능이 훨씬 뛰어납니다.

더 나아가기 – 컴퓨터 비전을 위한 실용적인 딥 러닝

당신의 호기심 많은 성격이 당신을 더 멀리 가고 싶게 만드나요? 다음을 확인하는 것이 좋습니다. 코스: “파이썬을 이용한 컴퓨터 비전을 위한 실용적인 딥러닝”.

또 다른 컴퓨터 비전 과정?

우리는 MNIST 숫자나 MNIST 패션의 분류를 하지 않을 것입니다. 그들은 오래전에 자신의 역할을 다했습니다. 고급 블랙박스 아키텍처가 성능 부담을 짊어지게 하기 전에 너무 많은 학습 리소스가 기본 데이터 세트와 기본 아키텍처에 집중하고 있습니다.

우리는 집중하고 싶다 신비화, 실용적인 사항, 이해, 직관실제 프로젝트. 배우고 싶다 방법 당신은 변화를 만들 수 있습니다? 우리는 뇌가 이미지를 처리하는 방식부터 유방암에 대한 연구 수준의 딥 러닝 분류기를 작성하고 "환각"하는 딥 러닝 네트워크에 이르기까지, 실제 작업을 통해 원리와 이론을 가르치고, 컴퓨터 비전을 해결하기 위해 딥러닝을 적용하는 전문가가 되기 위한 노하우와 도구.

안에 무엇입니까?

  • 비전의 첫 번째 원칙과 컴퓨터가 "보는" 방법을 가르칠 수 있는 방법
  • 컴퓨터 비전의 다양한 작업 및 응용
  • 작업을 더 쉽게 만들어줄 무역 도구
  • 컴퓨터 비전용 데이터세트 찾기, 생성 및 활용
  • 컨볼루션 신경망의 이론과 응용
  • 데이터 세트의 도메인 이동, 동시 발생 및 기타 편향 처리
  • Transfer Learning 및 다른 사람의 교육 시간 및 계산 리소스를 귀하의 이익을 위해 활용
  • 최첨단 유방암 분류기 구축 및 교육
  • 주류 아이디어에 건강한 회의론을 적용하고 널리 채택된 기술의 의미를 이해하는 방법
  • t-SNE 및 PCA를 사용하여 ConvNet의 "개념 공간" 시각화
  • 기업이 더 나은 결과를 얻기 위해 컴퓨터 비전 기술을 사용하는 방법에 대한 사례 연구
  • 적절한 모델 평가, 잠재 공간 시각화 및 모델의 관심 식별
  • 도메인 연구 수행, 자체 데이터 세트 처리 및 모델 테스트 설정
  • 최첨단 아키텍처, 아이디어의 진행, 독창적인 요소 및 구현 방법
  • KerasCV – 최첨단 파이프라인 및 모델 생성을 위한 WIP 라이브러리
  • 논문을 구문 분석하고 읽고 직접 구현하는 방법
  • 용도에 따른 모델 선택
  • 엔드 투 엔드 머신 러닝 파이프라인 만들기
  • Faster R-CNN, RetinaNets, SSD 및 YOLO를 통한 물체 감지에 대한 풍경 및 직관
  • 인스턴스 및 시맨틱 분할
  • YOLOv5를 사용한 실시간 객체 인식
  • YOLOv5 객체 감지기 훈련
  • KerasNLP(업계 최강의 WIP 라이브러리)를 사용하여 Transformers 작업
  • Transformer를 ConvNet과 통합하여 이미지 캡션 생성
  • Deepdream

결론

이 짧은 가이드에서는 from_logits 종종 새로운 실무자에게 질문을 제기하는 Keras 손실 클래스에 대한 주장입니다.

혼란은 계층 자체의 정의 내에서 다른 계층 위에 활성화 계층을 추가할 수 있는 약식 구문에서 발생할 수 있습니다. 우리는 마침내 언제 인수를 다음으로 설정해야 하는지 살펴보았습니다. True or False, 출력을 로짓으로 남겨두거나 SoftMax와 같은 활성화 함수를 통해 전달해야 하는 경우.

타임 스탬프 :

더보기 스택카부스