사용자 정의 레이어 내 레이어의 가중치 이름 지정

아이작 브린

Dense 하위 레이어 내에 사용자 지정 레이어가 있습니다. 이 하위 계층의 가중치에 이름을 지정할 수 있기를 원합니다. 그러나 name="my_dense"서브 레이어 이니셜 라이저 에서 사용 하는 것은이 작업을 수행하지 않는 것 같습니다. 가중치는 단순히 외부 사용자 정의 레이어의 이름을 따서 명명됩니다.

문제를 설명하기 위해 단순히 두 개의 조밀 한 레이어를 쌓는 사용자 지정 레이어를 원한다고 가정합니다. 이 사용자 정의 레이어의 가중치 이름을 인쇄하겠습니다.

class DoubleDense(keras.layers.Layer):
  def __init__(self, units, **kwargs):
    self.dense1 = keras.layers.Dense(units, name="first_dense")
    self.dense2 = keras.layers.Dense(units, name="second_dense")
    super(DoubleDense, self).__init__(**kwargs)

  def build(self, input_shape):
    self.dense1.build(input_shape)
    self.dense2.build(self.dense1.units)

  def call(self, input):
    hidden = self.dense1(input)
    return self.dense2(hidden)

dd = DoubleDense(3)

# We need to evaluate the layer once to build the weights
trivial_input = tf.ones((1,10))
output = dd(trivial_input)

# Print the names of all variables in the DoubleDense layer
print([weight.name for weight in dd.weights])

출력은 다음과 같습니다.

['double_dense_1/kernel:0',
 'double_dense_1/bias:0',
 'double_dense_1/kernel:0',
 'double_dense_1/bias:0']

...하지만 나는 다음과 같은 것을 더 기대하고 있었다.

['double_dense_1/first_dense_1/kernel:0',
 'double_dense_1/first_dense_1/bias:0',
 'double_dense_1/second_dense_1/kernel:0',
 'double_dense_1/second_dense_1/bias:0']

따라서 Keras는 이러한 가중치를 모호하게 명명했습니다. 가중치 텐서가 속하는지 dd.dense1또는 dd.dense2그 이름만으로는 알 수있는 방법이 없습니다 . 먼저 레이어를 선택한 다음 가중치 ( dd.dense1.weights) 선택할 수 있다는 것을 알고 있지만 응용 프로그램에서는이 작업을 수행하지 않는 것이 좋습니다.

사용자 정의 레이어의 하위 레이어 가중치에 이름을 지정하는 방법이 있습니까?

Tensorflow 전사

하위 클래스 레이어의 이름을 원하면 각 레이어 를 포함 name_scope하고 호출 해야합니다 build.

다음은 출력의 각 레이어에 이름을 부여하는 수정 된 코드입니다.

class DoubleDense(keras.layers.Layer):
  def __init__(self, units, **kwargs):
    self.dense1 = keras.layers.Dense(units)
    self.dense2 = keras.layers.Dense(units)
    super(DoubleDense, self).__init__( **kwargs)

  def build(self, input_shape):
    with tf.name_scope("first_dense"):
      self.dense1.build(input_shape)
    with tf.name_scope("second_dense"):
      self.dense2.build(self.dense1.units)

  def call(self, input):
    hidden = self.dense1(input)
    return self.dense2(hidden)


dd = DoubleDense(3)


# We need to evaluate the layer once to build the weights
trivial_input = tf.ones((1,10))
output = dd(trivial_input)

# Print the names of all variables in the DoubleDense layer
print([weight.name for weight in dd.weights])  

산출:

['double_dense/first_dense/kernel:0', 'double_dense/first_dense/bias:0', 'double_dense/second_dense/kernel:0', 'double_dense/second_dense/bias:0']  

이것이 귀하의 질문에 대한 답이되기를 바랍니다. Happy Learning!

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자 지정 어레이 이름

분류에서Dev

내 사용자 정의 Keras 레이어의 add_update ()가 가중치를 업데이트하지 않습니다.

분류에서Dev

둘 이상의 레이어가있는 사용자 지정지도 유형

분류에서Dev

1D에서 2D로 사용자 지정 레이어의 가중치 할당

분류에서Dev

Keras 사용자 정의 레이어가 일반 레이어와 달리 가중치를 반환하지 않습니다.

분류에서Dev

Java 용 어레이 정의

분류에서Dev

정의되지 않은 '플레이어'및 '플레이어'를 사용하면 정의되지 않은 '플레이어'오류가 사용됩니다.

분류에서Dev

Keras의 사용자 정의 레이어 내에서 가중치 행렬을 심층 복사하는 방법. 나중에 재 할당하기 위해 이전 가중치 행렬을 저장하려고합니다.

분류에서Dev

가중 평균 : 사용자 지정 레이어 가중치는 TensorFlow 2.2.0에서 변경되지 않습니다.

분류에서Dev

사용자 정의 제어 이벤트가 사용자 정의 내에서 실행되지 않음

분류에서Dev

AlertDialog에 추가 된 사용자 정의 레이아웃 내 TextView의 textAppearance를 대화 상자와 일치 시키려면 어떻게해야합니까?

분류에서Dev

사용자 지정 함수가있는 Keras 사용자 지정 레이어

분류에서Dev

컨벌루션 레이어의 필터 가중치 설정

분류에서Dev

R : 다중 레이어 ggplot에 대한 사용자 정의 범례

분류에서Dev

다중 레이어 맵의 활성 레이어 설정

분류에서Dev

다중 어레이의 모든 어레이 수정

분류에서Dev

사용자 정의 어댑터에서 상위 레이아웃 가져 오기

분류에서Dev

사용자가 크기를 선택하여 어레이의 VBA 크기 조정

분류에서Dev

Android의 어레이 어댑터에 대한 사용자 지정 필터

분류에서Dev

평탄화 레이어 출력에 임의의 값을 추가하는 Keras 사용자 정의 레이어 정의

분류에서Dev

사용자 정의 레이어는 훈련이 아니지만 버그가 아닙니다.

분류에서Dev

TensorFlow 2의 사용자 정의 레이어에 추가 된 손실은 컴파일시 지워집니다.

분류에서Dev

사용자 정의 가능한 히든 레이어가있는 TensorFlow 모델의 하위 클래스 정의

분류에서Dev

Tensorflow 2 eager 실행이 사용자 정의 레이어 내에서 비활성화되었습니다.

분류에서Dev

사용자 지정 중첩 plist 내의 값 업데이트

분류에서Dev

어레이 내의 어레이?

분류에서Dev

어레이 내의 Perl 어레이?

분류에서Dev

어레이 내의 어레이?

분류에서Dev

사용자 지정 어레이 어댑터 사용

Related 관련 기사

  1. 1

    사용자 지정 어레이 이름

  2. 2

    내 사용자 정의 Keras 레이어의 add_update ()가 가중치를 업데이트하지 않습니다.

  3. 3

    둘 이상의 레이어가있는 사용자 지정지도 유형

  4. 4

    1D에서 2D로 사용자 지정 레이어의 가중치 할당

  5. 5

    Keras 사용자 정의 레이어가 일반 레이어와 달리 가중치를 반환하지 않습니다.

  6. 6

    Java 용 어레이 정의

  7. 7

    정의되지 않은 '플레이어'및 '플레이어'를 사용하면 정의되지 않은 '플레이어'오류가 사용됩니다.

  8. 8

    Keras의 사용자 정의 레이어 내에서 가중치 행렬을 심층 복사하는 방법. 나중에 재 할당하기 위해 이전 가중치 행렬을 저장하려고합니다.

  9. 9

    가중 평균 : 사용자 지정 레이어 가중치는 TensorFlow 2.2.0에서 변경되지 않습니다.

  10. 10

    사용자 정의 제어 이벤트가 사용자 정의 내에서 실행되지 않음

  11. 11

    AlertDialog에 추가 된 사용자 정의 레이아웃 내 TextView의 textAppearance를 대화 상자와 일치 시키려면 어떻게해야합니까?

  12. 12

    사용자 지정 함수가있는 Keras 사용자 지정 레이어

  13. 13

    컨벌루션 레이어의 필터 가중치 설정

  14. 14

    R : 다중 레이어 ggplot에 대한 사용자 정의 범례

  15. 15

    다중 레이어 맵의 활성 레이어 설정

  16. 16

    다중 어레이의 모든 어레이 수정

  17. 17

    사용자 정의 어댑터에서 상위 레이아웃 가져 오기

  18. 18

    사용자가 크기를 선택하여 어레이의 VBA 크기 조정

  19. 19

    Android의 어레이 어댑터에 대한 사용자 지정 필터

  20. 20

    평탄화 레이어 출력에 임의의 값을 추가하는 Keras 사용자 정의 레이어 정의

  21. 21

    사용자 정의 레이어는 훈련이 아니지만 버그가 아닙니다.

  22. 22

    TensorFlow 2의 사용자 정의 레이어에 추가 된 손실은 컴파일시 지워집니다.

  23. 23

    사용자 정의 가능한 히든 레이어가있는 TensorFlow 모델의 하위 클래스 정의

  24. 24

    Tensorflow 2 eager 실행이 사용자 정의 레이어 내에서 비활성화되었습니다.

  25. 25

    사용자 지정 중첩 plist 내의 값 업데이트

  26. 26

    어레이 내의 어레이?

  27. 27

    어레이 내의 Perl 어레이?

  28. 28

    어레이 내의 어레이?

  29. 29

    사용자 지정 어레이 어댑터 사용

뜨겁다태그

보관