텐서플로 첫걸음

l

  • 온라인/오프라인 서점에서 판매 중입니다. [YES24], [교보문고], [알라딘]
  • 이 책의 코드를 쥬피터 노트북으로 옮긴 버전은 이곳에서 보실 수 있습니다. 쥬피터 노트북의 코드는 파이썬 3.5.2 와 텐서플로우 v0.9, v0.10, v0.11에서 테스트되었습니다.
  • 책을 내는 조그마한 소감과 도움 주신 분들에 대한 감사를 이곳에 적었습니다.
  • 조르디 토레스 교수가 한국어판 출간을 크게 축하해 주었습니다. 그리고 교수님 홈페이지에도 소개해 주셨네요.

‘텐서플로 첫걸음’은 이 블로그에 올려진 조르디 토레스 교수의 ‘First Contact with TensorFlow’의 한국어 번역판입니다. 블로그의 번역글은 그대로 유지되며 출판된 책에는 좀더 이해가 쉽도록 글을 교정하고 RNN에 관한 챕터를 추가하였습니다. 이 책과 함께 텐서플로우 백서(arXiv 1603.04457)와 콘볼루션 계산 가이드해커가 알려주는 뉴럴 네트워크, 해커에게 전해들은 머신러닝을 함께 보시면 좀 더 도움이 되실 것 같습니다.

이 책에 오타나 잘못된 점이 있으면 아래 ‘Your Inputs’에 자유롭게 글을 써 주세요. 또 제 이메일을 통해서 알려 주셔도 되고 이 페이지에 댓글을 달아 주셔도 좋습니다. 알려 주시면 올바른 내용으로 수정하겠습니다.

감사합니다.


Outputs (aka. errata)

  • p51, p55, p60, p61: 코드에서 plt.plot() 메소드를 사용할 때 label=’…’ 옵션을 지정하지 않아 plt.legend() 메소드 호출에서 경고가 발생합니다. 경고를 나타나지 않게 하려면 plt.legend() 메소드를 삭제하거나 plot.plot() 메소드에 label 옵션을 추가합니다.
  • p171 첫줄에서¹ : “num_steps는 20이므로” –> “batch_size가 20이므로”
  • p171 네번째줄에서¹ : “두 개의 계층, 20개의 배치, 200개의 셀이 반영된 [2, 20, 200]의 튜플입니다” –> “두 개의 계층, 두 종류의 상태가 반영된 [2, 2] 크기의 튜플입니다. 튜플의 각 요소는 20개의 배치, 200개의 셀이 반영된 [20, 200] 크기의 텐서입니다.”
  • p175 소스의 중간부분 주석에서¹ : “2*20*200 크기의 튜플입니다.” –> “20*200 텐서를 원소로 갖는 2*2 튜플입니다.”
  • p30 첫문단 끝에¹ : “…어깨를 나란히 하고 싶어합니다. 최근에는 딥러닝 프레임워크 패들패들-PaddlePaddle-(http://www.paddlepaddle.org)을 오픈소스로 공개하면서 딥러닝 소프트웨어 분야에서도 본격적으로 구글, 페이스북과 경쟁을 시작하였습니다.”
  • p30 두번째 문단 중간에¹ : “…제품에 빠르게 적용되도록 노력하고 있습니다. 그 노력으로 이미지 안에 있는 물체의 모양을 정확히 구분하여 분류하는 딥마스크(DeepMask), 샵마스크(SharpMask), 멀티패스넷(MultiPathNet) 공개하였습니다.”
  • p112 코드 열번째 라인² : matm=tf.matmul(x, W) 은 원서로부터 옮겨졌지만 불필요한 라인입니다.
  • p95 두번째 문단에서 : “예를 들어 2 이미지의 벡터는 [0, 1, 0, …, 0]” –> “예를 들어 2 이미지의 벡터는 [0, 0, 1, …, 0]”
¹ 2쇄에 반영되었습니다.
² 3쇄에 반영되었습니다.

Technical Note

  • 부록 A에 있는 코드는 파이썬 3 버전으로 작성되어 있습니다. 파이썬 2 버전에서 실행하실 경우에 run_epoch 함수의 코드 중 cost, *state_list, _ = session.run(fetch_list, feed_dict) 에서 에러가 발생합니다. * 는 언팩(unpack) 연산자로서 여러개의 리턴 값에 대응이 됩니다만 파이썬 2 에서는 이 기능을 지원하지 않으므로 아래와 같이 풀어서 써 주세요.
    temp = session.run(fetch_list, feed_dict)
    cost, state_list = temp[0], temp[1:-1]

Your Inputs