Colaboratory에서 Tensorflow 2를 사용하여 필기 숫자의 레이블을 예측합니다.

최종 노트북


  • htps : // 코 b. 레세아 rch. 오, ぇ. 이 m / d ゔ / 1R 또는 gct ct MY jc9T 6z4 pC5yF



  • 공동체에서 노트북 만들기



    공동체,
  • ファイル > Python 3 の新しいノートブック

  • 에서 새로운 노트북을 만듭니다.
  • 編集 > ノートブックの設定

  • 을 선택하면 다음과 같은 팝업이 표시되므로 ハードウェア アクセラレート의 드롭다운 메뉴에서 GPU를 선택합니다.



    필기 문자 이미지의 라벨을 예측하는 모델 학습



    다음 자습서를 실행합니다.
  • 전문가를 위한 TensorFlow 2.0 입문  |  TensorFlow Core

  • Tensorflow 버전 설정


    !pip list | grep tensorflow
    

    위를 실행하면 버전이 1.15.0임을 알 수 있습니다.


    !pip install -U tensorflow
    

    위를 실행하면 다음과 같은 오류가 발생하지만 이번 범위 내에서 문제가 없었습니다.



    다시 pip list 버전을 확인해 봅시다.



    모델 학습



    오로지 튜토리얼 코드를 복사하여 실행합니다. . .
    5 epoch 돌리는 데 몇 분이 걸렸지만 문제없이 종료되었습니다.

    MNIST 데이터 세트의 입력이 어떤 것인지 표시 해 본다



    노트북에서 이미지를 표시하는 방법에는 여러 가지가 있지만 이번에는 PIL를 사용합니다.
    from PIL import Image
    
    img = Image.fromarray(x_test[0].reshape((28,28)) * 255).convert("RGB")
    img
    

    다음과 같이 이미지가 7인 이미지가 표시되었습니다.



    자신의 필기 숫자 이미지의 라벨 예측해보기



    연필이라면 선이 너무 가늘고 잘 되지 않았기 때문에 매직 펜으로 덮어쓴 다음과 같은 이미지를 준비했습니다.



    왼쪽 창을 열면 ファイル라는 탭이 있으므로 선택하면 현재 작업 디렉토리의 파일이 표시됩니다.アップロード라는 버튼이 있으므로 거기에서 자신의 필기 이미지를 업로드합니다.



    MNIST 입력과의 차이는
  • 큰 크기
  • 흑백 이미지가 아닌 것
  • 배경이 더 밝음

  • 그래서 다음 코드로 MNIST의 이미지에 맞춥니다.
    from PIL import ImageOps
    
    my_img = ImageOps.invert(Image.open("my_input.jpg").resize((28, 28)).convert("L"))
    my_img
    



    값을 0에서 1로 변환하고 채널의 차원을 더한 다음 방금 학습한 모델에 입력하면
    출력은 다음과 같습니다.
    import numpy as np
    
    my_input = (np.array(my_img) / 255).reshape((28,28,1))
    my_output = model([my_input]).numpy()[0]
    my_output
    



    다음 코드에서 몇 번째 라벨의 확률이 가장 높은지 확인합니다.
    my_output.argmax()
    



    잘 예측할 수 있음을 확인했습니다.

    좋은 웹페이지 즐겨찾기