Keras / TensorFlow에서 RNN / LSTM 가중치를 시각화하는 방법은 무엇입니까?

OverLordGoldDragon

RNN 가중치 검사의 필요성을 논의하는 연구 간행물과 Q & A를 접했습니다. 일부 관련 답변은 올바른 방향으로 나와 있습니다. get_weights()그러나 실제로 가중치를 의미있게 시각화하는 방법은 무엇입니까? 즉, LSTM 및 GRU에는 게이트 가 있고 모든 RNN에는 독립적 인 기능 추출기 역할을하는 채널 이 있습니다. 그렇다면 (1) 게이트 별 가중치를 가져오고 (2) 정보를 제공하는 방식으로 플로팅하는 방법은 무엇입니까?

OverLordGoldDragon

소스 코드에서 검사 또는 비아 수 Keras / 잘 정의 된 순서 TF 빌드 RNN 가중치, layer.__dict__직접 - 다음 페치하는 데 사용되는 커널 당당 게이트 가중치; 그런 다음 텐서의 모양이 주어지면 채널당 처리를 사용할 수 있습니다. 아래 코드 및 설명 은 Keras / TF RNN의 가능한 모든 경우다루며 향후 API 변경 사항으로 쉽게 확장 할 수 있어야합니다.

RNN 그래디언트 시각화 및 RNN 정규화에 대한 응용 프로그램도 참조하십시오 . 이전 게시물과 달리 여기에 단순화 된 변형을 포함하지 않을 것입니다. 무게 추출 및 구성의 특성에 따라 여전히 다소 크고 복잡하기 때문입니다. 대신 저장소에서 관련 소스 코드를보기 만하면됩니다 (다음 섹션 참조).


코드 소스 : RNN (이 게시물에는 더 큰 이미지 포함), 내 저장소 참조; 다음이 포함됩니다.

  • 활성화 시각화
  • 가중치 시각화
  • 활성화 그라디언트 시각화
  • 가중치 그라디언트 시각화
  • 모든 기능을 설명하는 독 스트링
  • Eager, Graph, TF1, TF2 및 from keras&from tf.keras
  • 예제에 표시된 것보다 더 큰 시각적 사용자 지정 가능성

시각화 방법 :

  • 2D 히트 맵 : 게이트 별, 커널 별, 방향 별 가중치 분포 플롯; 커널과 숨겨진 관계를 명확하게 보여줍니다.
  • 히스토그램 : 게이트 당, 커널 당, 방향 당 가중치 분포를 플롯합니다. 컨텍스트 정보가 손실 됨

EX 1 : uni-LSTM, 256 개 단위, 무게 - batch_shape = (16, 100, 20)(입력)
rnn_histogram(model, 'lstm', equate_axes=False, show_bias=False)
rnn_histogram(model, 'lstm', equate_axes=True, show_bias=False)
rnn_heatmap(model, 'lstm')

  • 상단 플롯은 히스토그램 서브 플롯 그리드로, 커널 당 및 각 커널 내, 게이트 당 가중치 분포를 보여줍니다.
  • 두 번째 플롯 세트 equate_axes=True는 커널과 게이트를 균등하게 비교하여 비교 품질을 개선하지만 잠재적으로 시각적 매력을 저하시킵니다.
  • 마지막 플롯은 동일한 가중치의 히트 맵으로, 게이트 분리는 수직선으로 표시되고 바이어스 가중치도 포함됩니다.
  • 히스토그램과 달리 히트 맵 은 채널 / 컨텍스트 정보를 보존합니다 . 입력에서 숨김으로, 숨김에서 숨김으로 변환 매트릭스를 명확하게 구분할 수 있습니다.
  • Forget gate에서 최대 값이 집중되어 있음을 주목하십시오. 퀴즈로 Keras에서 (일반적으로) 바이어스 게이트는 모두 0으로 초기화됩니다. 단, 1로 초기화되는 Forget bias는 예외입니다.


EX 2: bi-CuDNNLSTM, 256 units, weights -- batch_shape = (16, 100, 16) (input)
rnn_histogram(model, 'bidir', equate_axes=2)
rnn_heatmap(model, 'bidir', norm=(-.8, .8))

  • Bidirectional is supported by both; biases included in this example for histograms
  • Note again the bias heatmaps; they no longer appear to reside in the same locality as in EX 1. Indeed, CuDNNLSTM (and CuDNNGRU) biases are defined and initialized differently - something that can't be inferred from histograms

enter image description here enter image description here


EX 3: uni-CuDNNGRU, 64 units, weights gradients -- batch_shape = (16, 100, 16) (input)
rnn_heatmap(model, 'gru', mode='grads', input_data=x, labels=y, cmap=None, absolute_value=True)

  • We may wish to visualize gradient intensity, which can be done via absolute_value=True and a greyscale colormap
  • Gate separations are apparent even without explicit separating lines in this example:
    • New is the most active kernel gate (input-to-hidden), suggesting more error correction on permitting information flow
    • Reset is the least active recurrent gate (hidden-to-hidden), suggesting least error correction on memory-keeping


BONUS EX: LSTM NaN detection, 512 units, weights -- batch_shape = (16, 100, 16) (input)

  • Both the heatmap and the histogram come with built-in NaN detection - kernel-, gate-, and direction-wise
  • Heatmap will print NaNs to console, whereas histogram will mark them directly on the plot
  • Both will set NaN values to zero before plotting; in example below, all related non-NaN weights were already zero

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Keras / TensorFlow에서 RNN / LSTM 그라디언트를 시각화하는 방법은 무엇입니까?

분류에서Dev

Vanila Tensorflow의 LSTM 셀에서 모든 가중치를 추출하는 방법은 무엇입니까?

분류에서Dev

Keras LSTM에 공급하기 위해 간단한 시리즈를 변환하는 방법은 무엇입니까?

분류에서Dev

Keras에서 필요한 LSTM 셀 수와 각 LSTM 셀의 단위 수를 아는 규칙은 무엇입니까?

분류에서Dev

Keras에서 재현 가능한 가중치 초기화를 얻는 방법은 무엇입니까?

분류에서Dev

Keras for AlexNet에서 훈련하기 전에 imagenet 가중치를로드하는 방법은 무엇입니까?

분류에서Dev

Keras에서 입력 크기가 다른 두 개의 LSTM 레이어를 결합하는 방법은 무엇입니까?

분류에서Dev

LSTM이 keras에서 시퀀스를 반환 할 때 소프트 맥스를 수행하는 방법은 무엇입니까?

분류에서Dev

신경망 시각화, 가중치에 따라 선 너비를 변경하는 방법은 무엇입니까?

분류에서Dev

Tensorflow에서 스택 RNN을 구현하는 방법은 무엇입니까?

분류에서Dev

Tensorflow : 다중 클래스 분류에서 tf.keras.metrics를 사용하는 방법은 무엇입니까?

분류에서Dev

keras 모델에서 가중치 행렬에 대한 가변 텐서를 초기화하는 방법은 무엇입니까?

분류에서Dev

배치 정규화가 모델의 일부인 경우 LSTM에 대해 Tensorflow에서 Monte Carlo Dropout을 적용하는 방법은 무엇입니까?

분류에서Dev

keras에서 maclaurin 시리즈를 구현하는 방법은 무엇입니까?

분류에서Dev

Keras의 각 시퀀스에 대해 둘 이상의 값을 예측하는 방법은 무엇입니까? LSTM 레이어

분류에서Dev

가중치 / 편향에서 Keras 모델을 재현하는 방법은 무엇입니까?

분류에서Dev

사전 훈련 된 TensorFlow 2 모델에서 가중치에 액세스하고 시각화하는 방법은 무엇입니까?

분류에서Dev

Windows에서 ffplay 시각화를 사용하는 방법은 무엇입니까?

분류에서Dev

Tensorflow Keras에서 tf.nn.sampled_softmax_loss를 사용하는 방법은 무엇입니까?

분류에서Dev

Kaggle Notebook의 GPU에서 Tensorflow의 Keras model.fit () 함수를 실행하는 방법은 무엇입니까?

분류에서Dev

LSTM에서 Return_Sequence를 끈 후 치수 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

CNTK에서 시퀀스 분류 LSTM 네트워크를 구현하는 방법은 무엇입니까?

분류에서Dev

Keras LSTM이 다 변수 설정에서 여러 시계열에 대한 예측을 수행하도록하는 방법은 무엇입니까?

분류에서Dev

tensorflow에 가중치 초기화 상태를 추가하는 방법은 무엇입니까?

분류에서Dev

tensorflow v2.x 백엔드가있는 keras에서 tensorflow v1.x 백엔드로 keras 모델을로드하는 방법은 무엇입니까?

분류에서Dev

각 시대에 대한 케 라스 모델의 가중치를 저장하는 방법은 무엇입니까?

분류에서Dev

이 광범위한 값으로 LSTM 모델 (Tensorflow 사용)에 대한 데이터를 정규화하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

파이썬에서 많은 기능을 가진 LSTM을 처리하는 방법은 무엇입니까?

분류에서Dev

Keras 모델 끝에 tensorflow 수학 함수를 추가하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Keras / TensorFlow에서 RNN / LSTM 그라디언트를 시각화하는 방법은 무엇입니까?

  2. 2

    Vanila Tensorflow의 LSTM 셀에서 모든 가중치를 추출하는 방법은 무엇입니까?

  3. 3

    Keras LSTM에 공급하기 위해 간단한 시리즈를 변환하는 방법은 무엇입니까?

  4. 4

    Keras에서 필요한 LSTM 셀 수와 각 LSTM 셀의 단위 수를 아는 규칙은 무엇입니까?

  5. 5

    Keras에서 재현 가능한 가중치 초기화를 얻는 방법은 무엇입니까?

  6. 6

    Keras for AlexNet에서 훈련하기 전에 imagenet 가중치를로드하는 방법은 무엇입니까?

  7. 7

    Keras에서 입력 크기가 다른 두 개의 LSTM 레이어를 결합하는 방법은 무엇입니까?

  8. 8

    LSTM이 keras에서 시퀀스를 반환 할 때 소프트 맥스를 수행하는 방법은 무엇입니까?

  9. 9

    신경망 시각화, 가중치에 따라 선 너비를 변경하는 방법은 무엇입니까?

  10. 10

    Tensorflow에서 스택 RNN을 구현하는 방법은 무엇입니까?

  11. 11

    Tensorflow : 다중 클래스 분류에서 tf.keras.metrics를 사용하는 방법은 무엇입니까?

  12. 12

    keras 모델에서 가중치 행렬에 대한 가변 텐서를 초기화하는 방법은 무엇입니까?

  13. 13

    배치 정규화가 모델의 일부인 경우 LSTM에 대해 Tensorflow에서 Monte Carlo Dropout을 적용하는 방법은 무엇입니까?

  14. 14

    keras에서 maclaurin 시리즈를 구현하는 방법은 무엇입니까?

  15. 15

    Keras의 각 시퀀스에 대해 둘 이상의 값을 예측하는 방법은 무엇입니까? LSTM 레이어

  16. 16

    가중치 / 편향에서 Keras 모델을 재현하는 방법은 무엇입니까?

  17. 17

    사전 훈련 된 TensorFlow 2 모델에서 가중치에 액세스하고 시각화하는 방법은 무엇입니까?

  18. 18

    Windows에서 ffplay 시각화를 사용하는 방법은 무엇입니까?

  19. 19

    Tensorflow Keras에서 tf.nn.sampled_softmax_loss를 사용하는 방법은 무엇입니까?

  20. 20

    Kaggle Notebook의 GPU에서 Tensorflow의 Keras model.fit () 함수를 실행하는 방법은 무엇입니까?

  21. 21

    LSTM에서 Return_Sequence를 끈 후 치수 문제를 해결하는 방법은 무엇입니까?

  22. 22

    CNTK에서 시퀀스 분류 LSTM 네트워크를 구현하는 방법은 무엇입니까?

  23. 23

    Keras LSTM이 다 변수 설정에서 여러 시계열에 대한 예측을 수행하도록하는 방법은 무엇입니까?

  24. 24

    tensorflow에 가중치 초기화 상태를 추가하는 방법은 무엇입니까?

  25. 25

    tensorflow v2.x 백엔드가있는 keras에서 tensorflow v1.x 백엔드로 keras 모델을로드하는 방법은 무엇입니까?

  26. 26

    각 시대에 대한 케 라스 모델의 가중치를 저장하는 방법은 무엇입니까?

  27. 27

    이 광범위한 값으로 LSTM 모델 (Tensorflow 사용)에 대한 데이터를 정규화하는 가장 좋은 방법은 무엇입니까?

  28. 28

    파이썬에서 많은 기능을 가진 LSTM을 처리하는 방법은 무엇입니까?

  29. 29

    Keras 모델 끝에 tensorflow 수학 함수를 추가하는 방법은 무엇입니까?

뜨겁다태그

보관