3 개의 임베딩 레이어로 구성된 Keras 연결 레이어를 추출하지만 목록이 비어 있습니다.

NikSp

하나의 단일 출력을 예측하기 위해 다중 입력 (실제로 3 개)이있는 Keras 분류 모델을 구성하고 있습니다. 특히 내 3 가지 입력 은 다음과 같습니다.

  1. 배우
  2. 줄거리 요약
  3. 관련 영화 기능

산출:

  1. 장르 태그

Python 코드 (다중 입력 케라 생성)

def kera_multy_classification_model():

    sentenceLength_actors = 15
    vocab_size_frequent_words_actors = 20001

    sentenceLength_plot = 23
    vocab_size_frequent_words_plot = 17501

    sentenceLength_features = 69
    vocab_size_frequent_words_features = 20001

    model = keras.Sequential(name='Multy-Input Keras Classification model')

    actors = keras.Input(shape=(sentenceLength_actors,), name='actors_input')
    plot = keras.Input(shape=(sentenceLength_plot,), name='plot_input')
    features = keras.Input(shape=(sentenceLength_features,), name='features_input')

    emb1 = layers.Embedding(input_dim = vocab_size_frequent_words_actors + 1,
                            # based on keras documentation input_dim: int > 0. Size of the vocabulary, i.e. maximum integer index + 1.
                            output_dim = Keras_Configurations_model1.EMB_DIMENSIONS,
                            # int >= 0. Dimension of the dense embedding
                            embeddings_initializer = 'uniform', 
                            # Initializer for the embeddings matrix.
                            mask_zero = False,
                            input_length = sentenceLength_actors,
                            name="actors_embedding_layer")(actors)
    encoded_layer1 = layers.LSTM(100)(emb1)

    emb2 = layers.Embedding(input_dim = vocab_size_frequent_words_plot + 1,
                            output_dim = Keras_Configurations_model2.EMB_DIMENSIONS,
                            embeddings_initializer = 'uniform',
                            mask_zero = False,
                            input_length = sentenceLength_plot,
                            name="plot_embedding_layer")(plot)
    encoded_layer2 = layers.LSTM(100)(emb2)

    emb3 = layers.Embedding(input_dim = vocab_size_frequent_words_features + 1,
                            output_dim = Keras_Configurations_model3.EMB_DIMENSIONS,
                            embeddings_initializer = 'uniform',
                            mask_zero = False,
                            input_length = sentenceLength_features,
                            name="features_embedding_layer")(features)
    encoded_layer3 = layers.LSTM(100)(emb3)

    merged = layers.concatenate([encoded_layer1, encoded_layer2, encoded_layer3])

    layer_1 = layers.Dense(Keras_Configurations_model1.BATCH_SIZE, activation='relu')(merged)

    output_layer = layers.Dense(Keras_Configurations_model1.TARGET_LABELS, activation='softmax')(layer_1)

    model = keras.Model(inputs=[actors, plot, features], outputs=output_layer)

    print(model.output_shape)

    print(model.summary())

    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['sparse_categorical_accuracy'])

모델의 구조

여기에 이미지 설명 입력

내 문제:

일부 학습 데이터에서 모델을 성공적으로 피팅하고 학습 한 후 나중에 사용하기 위해이 모델의 임베딩을 추출하고 싶습니다. 다중 입력 keras 모델을 사용하기 전의 주요 접근 방식은 3 개의 서로 다른 keras 모델을 훈련하고 모양 100의 3 개의 서로 다른 임베딩 레이어를 추출하는 것이 었습니다. 이제 다중 입력 keras 모델 이 있으므로 출력 모양이 있는 연결된 임베딩 레이어를 추출하고 싶습니다 ( 없음, 300).

이 파이썬 명령을 사용하려고 할 때 :

embeddings = model_4.layers[9].get_weights()
print(embeddings)

또는

embeddings = model_4.layers[9].get_weights()[0]
print(embeddings)

빈 목록 (첫 번째 코드 샘플) 또는 IndenError : list index out of range (두 번째 코드 샘플)를 얻습니다 .

이 문제에 대한 조언이나 도움에 미리 감사드립니다. 이 질문을 더 완벽하게 만들기 위해 내가 놓친 추가 정보가 있으면 의견에 자유롭게 물어보십시오.

참고 : 이전에 답변 한이 질문에 Python 코드 및 모델 구조도 제시되었습니다.

비벡 메타

Concatenate 레이어에는 가중치가 없으므로 (모델 요약에서 볼 수 있듯이 학습 가능한 매개 변수가 없음) get_weights()출력이 비어 있습니다. 연결은 작업입니다.
귀하의 경우 훈련 후 개별 임베딩 레이어의 가중치를 얻을 수 있습니다.

model.layers[3].get_weights() # similarly for layer 4 and 5

또는 임베딩을 (None, 300)에 저장하려면 numpy를 사용하여 가중치를 연결할 수 있습니다.

out_concat = np.concatenate([mdoel.layers[3].get_weights()[0], mdoel.layers[4].get_weights()[0], mdoel.layers[5].get_weights()[0]], axis=-1)

연결 레이어의 출력 텐서를 얻을 수 있지만 :

out_tensor = model.layers[9].output
# <tf.Tensor 'concatenate_3_1/concat:0' shape=(?, 300) dtype=float32>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사전 훈련 된 임베딩 레이어와 입력 레이어를 연결하는 방법

분류에서Dev

내부 Keras 모델의 다중 임베딩 레이어 문제

분류에서Dev

Keras 단어 임베딩 행렬에는 0으로 구성된 첫 번째 행이 있습니다.

분류에서Dev

2 개의 어레이를 연결하여 어레이를 생성하려면 어떻게해야합니까?

분류에서Dev

연결 목록 구문 : "다음"이 이미 정의되어 있습니까?

분류에서Dev

연결된 키를 사용하여 어레이를 분리하도록 어레이 재구성

분류에서Dev

OpenMDAO v0.13 : 어셈블리의 nxm 어레이 슬라이스를 n 개의 개별 구성 요소에있는 1xm 어레이에 연결

분류에서Dev

비어 있지 않은 데이터 프레임 연결

분류에서Dev

PyTorch에서 임베딩 레이어를 선형 레이어로 사용하는 방법은 무엇입니까?

분류에서Dev

데이터 프레임에서 6 개 이상의 1로 연결된 1의 수를 어떻게 찾습니까?

분류에서Dev

2 개의 어레이를 다른 어레이에 동기화 (노달 연결)

분류에서Dev

목록이 비어 있지 않은 경우 연결된 목록 오름차순으로 요소를 추가하려면 어떻게해야합니까?

분류에서Dev

Ubuntu 12.04에서 "연결된 장치 목록"이 비어 있습니다.

분류에서Dev

공통 열인 연구 사이트 "이름"을 기반으로 2 개의 Pandas 데이터 프레임을 결합하려면 어떻게해야합니까?

분류에서Dev

pandas 인덱스로 인해 데이터 프레임을 연결하는 데 어려움이 있습니다.

분류에서Dev

R을 사용하여 하이픈으로 연결된 주소의 데이터 프레임을 어떻게 "확장"할 수 있습니까?

분류에서Dev

keras는 레이어 추가를 허용하지 않습니다.

분류에서Dev

멀티 레이어 LSTM 전에 임베딩 레이어를 추가하는 방법은 무엇입니까?

분류에서Dev

컬 성공에 의한 S3 사전 서명 된 URL 업로드이지만 비어 있습니다.

분류에서Dev

카테고리 입력으로 하나의 핫 대신 임베딩 레이어를 사용할 수 있습니까?

분류에서Dev

MySQL 데이터베이스에 연결하고 Swift로 다른 곳에서 사용할 어레이 생성

분류에서Dev

데이터베이스에서 반환 된 개체 목록이 비어 있습니다.

분류에서Dev

caffe : 완전히 연결된 레이어를 3D 데이터로 변환

분류에서Dev

데이터 프레임을 ID와 결합 된 목록으로 요약하려면 어떻게합니까?

분류에서Dev

이 어레이를 어떻게 하나의 어레이로 만들 수 있습니까?

분류에서Dev

IHttpContextAccessor의 클레임이 비어 있습니다.

분류에서Dev

Pytorch에서 저 차원 임베딩 레이어를 구현하는 방법

분류에서Dev

9x9 어레이를 9 개의 3x3 구성 요소로 분할하는 방법

분류에서Dev

데이터 프레임의 항목 수를 계산하고 결과를 데이터 프레임의 새 열에 어떻게 지정할 수 있습니까?

Related 관련 기사

  1. 1

    사전 훈련 된 임베딩 레이어와 입력 레이어를 연결하는 방법

  2. 2

    내부 Keras 모델의 다중 임베딩 레이어 문제

  3. 3

    Keras 단어 임베딩 행렬에는 0으로 구성된 첫 번째 행이 있습니다.

  4. 4

    2 개의 어레이를 연결하여 어레이를 생성하려면 어떻게해야합니까?

  5. 5

    연결 목록 구문 : "다음"이 이미 정의되어 있습니까?

  6. 6

    연결된 키를 사용하여 어레이를 분리하도록 어레이 재구성

  7. 7

    OpenMDAO v0.13 : 어셈블리의 nxm 어레이 슬라이스를 n 개의 개별 구성 요소에있는 1xm 어레이에 연결

  8. 8

    비어 있지 않은 데이터 프레임 연결

  9. 9

    PyTorch에서 임베딩 레이어를 선형 레이어로 사용하는 방법은 무엇입니까?

  10. 10

    데이터 프레임에서 6 개 이상의 1로 연결된 1의 수를 어떻게 찾습니까?

  11. 11

    2 개의 어레이를 다른 어레이에 동기화 (노달 연결)

  12. 12

    목록이 비어 있지 않은 경우 연결된 목록 오름차순으로 요소를 추가하려면 어떻게해야합니까?

  13. 13

    Ubuntu 12.04에서 "연결된 장치 목록"이 비어 있습니다.

  14. 14

    공통 열인 연구 사이트 "이름"을 기반으로 2 개의 Pandas 데이터 프레임을 결합하려면 어떻게해야합니까?

  15. 15

    pandas 인덱스로 인해 데이터 프레임을 연결하는 데 어려움이 있습니다.

  16. 16

    R을 사용하여 하이픈으로 연결된 주소의 데이터 프레임을 어떻게 "확장"할 수 있습니까?

  17. 17

    keras는 레이어 추가를 허용하지 않습니다.

  18. 18

    멀티 레이어 LSTM 전에 임베딩 레이어를 추가하는 방법은 무엇입니까?

  19. 19

    컬 성공에 의한 S3 사전 서명 된 URL 업로드이지만 비어 있습니다.

  20. 20

    카테고리 입력으로 하나의 핫 대신 임베딩 레이어를 사용할 수 있습니까?

  21. 21

    MySQL 데이터베이스에 연결하고 Swift로 다른 곳에서 사용할 어레이 생성

  22. 22

    데이터베이스에서 반환 된 개체 목록이 비어 있습니다.

  23. 23

    caffe : 완전히 연결된 레이어를 3D 데이터로 변환

  24. 24

    데이터 프레임을 ID와 결합 된 목록으로 요약하려면 어떻게합니까?

  25. 25

    이 어레이를 어떻게 하나의 어레이로 만들 수 있습니까?

  26. 26

    IHttpContextAccessor의 클레임이 비어 있습니다.

  27. 27

    Pytorch에서 저 차원 임베딩 레이어를 구현하는 방법

  28. 28

    9x9 어레이를 9 개의 3x3 구성 요소로 분할하는 방법

  29. 29

    데이터 프레임의 항목 수를 계산하고 결과를 데이터 프레임의 새 열에 어떻게 지정할 수 있습니까?

뜨겁다태그

보관