강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của thfdjd
thfdjd

câu hỏi đã được viết

Giới thiệu deep learning xử lý ngôn ngữ tự nhiên qua ví dụ NLP với TensorFlow - Từ RNN đến BERT

Thực hành 1 - Thực hiện dịch Bồ Đào Nha-Anh với TensorFlow và mô hình Seq2Seq

seq2seq를_이용한_NMT.ipynb 실습코드 에러 문의사항입니다.

Viết

·

243

0

실습 1 - TensorFlow와 Seq2Seq 모델을 이용해서 포르투칼어-영어 번역 수행해보기

실습코드 내 GRU를 이용한 Encoder 부분에서 아래와 같이 error가 납니다.

encoder = Encoder(vocab_inp_size, embedding_dim, units, BATCH_SIZE)

# 샘플 입력
sample_hidden = encoder.initialize_hidden_state()
sample_output, sample_hidden = encoder(example_input_batch, sample_hidden)
print ('Encoder output shape: (batch size, sequence length, units) {}'.format(sample_output.shape))
print ('Encoder Hidden state shape: (batch size, units) {}'.format(sample_hidden.shape))

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-71-879487bff06b> in <cell line: 5>()
      3 # 샘플 입력
      4 sample_hidden = encoder.initialize_hidden_state()
----> 5 sample_output, sample_hidden = encoder(example_input_batch, sample_hidden)
      6 print ('Encoder output shape: (batch size, sequence length, units) {}'.format(sample_output.shape))
      7 print ('Encoder Hidden state shape: (batch size, units) {}'.format(sample_hidden.shape))

1 frames
<ipython-input-69-76383a24b17a> in call(self, x, hidden)
     12   def call(self, x, hidden):
     13     x = self.embedding(x)
---> 14     output, state = self.gru(x, initial_state = hidden)
     15     return output, state
     16 

ValueError: Exception encountered when calling Encoder.call().

too many values to unpack (expected 2)

Arguments received by Encoder.call():
  • x=tf.Tensor(shape=(64, 16), dtype=int32)
  • hidden=tf.Tensor(shape=(64, 1024), dtype=float32)

self.gru(x, initia_state=hidden)부분에서 출력 결과가 두 개가 아닌 65개가 출력되어서 output, state 두 개로 할당하면 안되는 것 같습니다!

 

 

딥러닝tensorflowNLP

Câu trả lời 2

0

AISchool님의 프로필 이미지
AISchool
Người chia sẻ kiến thức

안녕하세요~. 반갑습니다.

먼저 수강에 불편을 드려서 죄송합니다.

tensorflow 버전을 정리한 아래 colab으로 실습 진행을 부탁드립니다.

 

https://colab.research.google.com/drive/1W-XufD5iis6CM5igyws4Xmb5jTgXIAKI?usp=sharing

좋은 하루되세요.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문을 보니 TensorFlow와 Seq2Seq 모델을 이용한 포르투칼어-영어 번역 실습에서 encoder 부분에 오류가 발생하는 것 같네요.

실습 코드 내에서 self.gru(x, initial_state=hidden) 호출 시 예상했던 것과 다르게 출력 결과가 두 개가 아니라 여러 개로 반환되어 발생하는 오류 같습니다. GRU layer에서 return_sequencesreturn_state의 설정에 따라 반환 값이 달라질 수 있습니다. 기본적으로 return_state=False, return_sequences=False 상태로, 이 두 매개변수 설정에 따라 GRU 층의 출력 형태가 달라지므로 GRU 층을 정의하는 부분의 코드를 다시 확인해주세요.

일반적으로, return_sequences=True는 각 시퀀스에 대한 출력을 반환하고, return_state=True는 마지막 상태를 반환합니다. 즉, return_sequences, return_state 둘 다 True로 설정할 경우 출력 결과로 (output, state)를 기대할 수 있습니다.

self.gru 호출 부분에서 기대했던 출력 결과의 수와 실제 출력 결과의 수가 불일치하여 발생하는 이 오류를 해결하기 위해서는 GRU Layer를 정의할 때 return_sequencesreturn_state 매개변수를 잘 확인하시고, 해당하는 부분의 코드를 적절히 조정해야 합니다.

또한, 해당 GRU Layer를 사용할 때, initial_state 매개변수를 올바르게 설정했는지 확인해보세요. initial_state=hidden처럼 설정하는 부분은 본래의 의도와 부합하는 것으로 보이지만, 반환되어야 하는 값의 수에 대한 오류인 만큼 GRU Layer의 정의 부분과 호출 부분에서 반환 값에 대한 기대를 명확히 해야 할 것 같습니다.

이 부분을 확인하고 수정해보시길 바랍니다. 추가 궁금증이 있으시면 더 질문해주세요.

Hình ảnh hồ sơ của thfdjd
thfdjd

câu hỏi đã được viết

Đặt câu hỏi