Tensorflow 101

텐서플로우를 이용하여 가장 간단한 형태의 텐서플로우 코드를 작성하여 딥러닝을 구현해보는 딥러닝 기초 수업입니다.

Tensorflow 101 텐서플로우를 이용하여 가장 간단한 형태의 텐서플로우 코드를 작성하여 딥러닝을 구현해보는 딥러닝 기초 수업입니다.

세번째 딥러닝 - 아이리스 품종 분류

수업소개

아이리스 품종을 분류하는 딥러닝 모델을 텐서플로우를 이용하여 만들어 보고, 분류모델과 회귀모델의 차이점을 이해합니다. 범주형 변수의 처리 방법인 원핫인코딩을 해야하는 이유와 활성화함수 softmax를 사용하는 이유를 학습합니다.

강의 

 

원핫인코딩

 

소프트맥스

 

실습 

 

소스코드

colab |  backend.ai

###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd

###########################
# 1.과거의 데이터를 준비합니다.
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv'
아이리스 = pd.read_csv(파일경로)
아이리스.head()

# 원핫인코딩
아이리스 = pd.get_dummies(아이리스)

# 종속변수, 독립변수
독립 = 아이리스[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']]
종속 = 아이리스[['품종_setosa', '품종_versicolor', '품종_virginica']]
print(독립.shape, 종속.shape)

###########################
# 2. 모델의 구조를 만듭니다
X = tf.keras.layers.Input(shape=[4])
Y = tf.keras.layers.Dense(3, activation='softmax')(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy',
              metrics='accuracy')

###########################
# 3.데이터로 모델을 학습(FIT)합니다.
model.fit(독립, 종속, epochs=1000, verbose=0)
model.fit(독립, 종속, epochs=10)

###########################
# 4. 모델을 이용합니다
# 맨 처음 데이터 5개
print(model.predict(독립[:5]))
print(종속[:5])

# 맨 마지막 데이터 5개
print(model.predict(독립[-5:]))
print(종속[-5:])

###########################
# weights & bias 출력
print(model.get_weights())

댓글

댓글 본문
  1. 후라라랄
    감사드립니다. 이숙번님.

    저도 그렇게 넣었는데, 잘 안되었거든요..
    자세히 제입력자료를 보니까 ' [ ]'를 하나 빠져있더군요.
    이렇게 model.predict([[5.0, 2.7, 1.3, 0.1]])입력하니까
    이런결과가 나오네요
    array([[9.9474925e-01, 5.2502127e-03, 6.1139997e-07]], dtype=float32)

    세토사인가봅니다.
    와... 감사~ 감사 드립니다.!!

    부록2로 더 층을 만들어 학습한 결과 세토사라고 확실하게 알려주네요
    array([[1.0000000e+00, 1.7214349e-10, 3.4228507e-09]], dtype=float32)
    대화보기
    • 이숙번
      아래처럼 넣어보시겠어요?
      model.predict([[5.0, 2.7, 1.3, 0.1]])

      칼럼이 4개인 형태의 데이터로 입력을 주셔야 하거든요!

      :)
      대화보기
      • 후라라랄
        이선비님께서 직접 답변을 주셔서 대단히 감사드립니다.
        제 질문이 좀 잘못되었습니다.
        이선비님께서 강의하신 아이리스품종분류 학습을 마치고
        바로 꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭의 값을 입력하면
        바로 아이리스품종을 알 수 있는 방법을 말합니다

        위의 1,2,3번까지 진행한 후에
        레몬네이드처럼 .
        predict([5.0], [2.7], [1.3], [0.1]])의 값을 입력니까
        NameError: name 'predict' is not defined 라는 에러가 뜸니다..

        초보라서 그런지 질문은 간단해 보이는데,
        전달을 잘 못해서 질문이 장황합니다. 이해해 주세요.
        대화보기
        • 이선비
          독립변수가 4개인 형태로 학습을 마친 상태라면

          # 아래처럼 읽어들인 후에
          data = pd.read_csv('종속변수가 없는 자료.csv')
          # 칼럼이 4개짜리가 맞는지 확인을 하고,
          print(data.shape)

          # 아래의 코드로 입력 데이터의 분류 결과를 받아볼 수 있습니다.
          model.predict(data)
          대화보기
          • 후라라랄
            컴맹에서 그래도 이제부터 코딩 한번 해보자 원을 세우고,
            이것 저것, 이곳 저곳을 헤메고 다니는 방랑자. 후라라랄입니다.
            교육자료 훌륭합니다. 초보자인 제가 이해가 쏙쏙되네요.
            감사합니다.

            교육자료를 보고 또 실습해보고 난 다음..
            의문이 생겨서 아시는 분들께 도움을 구합니다.

            제가 어떤 '꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭'의 자료가 있는데,
            이것이 아이리스 어느품종인지 알려면 위의 코딩 후에
            어떻게 코딩을 추가하면 아이리스품종을 알수 있나요?
            (레몬네이드와 같이 온도를 입력하면 바로 판매량이 나오도록...)
          • 소야
            완료
          • NewWorld
            완료!
          • 이숙번
            텐서플로우 버전을 확인해 보시면 좋을 것 같아요.
            최신 버전으로 업데이트 하신 후에는 동작할 거에요.
            대화보기
            • jang1red
              완료
            • jupyter로 따라써보면서 수업 듣고 있는데요
              metrics='accuracy' 로는 에러가 나고 metrics=['accuracy']로 하면 정상적으로 처리가 되던데 어떤 게 다른건가요?
            • 권동채
              재미있게 잘 보았습니다.
              수고하셨습니다.
            • 예니
              완료!!
            • 감사합니다
            • ybkim95
              완료했습니다!
            • 지식탐구자
              완료~
            • 대딤수
              오늘도 유익한 강의 감사합니다:)
            • 김민규
              역시 재밌네요!
            • 백지원
              완료
            • Kwang Chul Kim
              완료.^^
            • doryeng
              완료!
            • byoonn
              완료
            • 완료!
            • Jin Kwang Kang
              완료!
            • kala555
              완료
            • 국돌이
              감사합니다
              대화보기
              • 이선비
                수업자료는 다음 깃허브를 참고해주세요. :)
                https://github.com......ow1
                대화보기
                • 이선비
                  토브님이 설명을 잘 주셨네요.
                  직접 보시면 훨씬 이해가 편할거 같아서 목록을 남깁니다. :)

                  9.98e+03 => 9980
                  9.98e+02 => 998
                  9.98e+01 => 99.8
                  9.98e+00 => 9.98
                  9.98e-01 => 0.998
                  9.98e-02 => 0.0998
                  9.98e-03 => 0.00998
                  9.98e-04 => 0.000998
                  대화보기
                  • 토브
                    변수명을 지정하는것은 상관이없습니다.
                    다만 추후에 변수를 불러올때
                    소스코드에서처럼 하게되면 원 데이터를 불러올 수 없다는 단점이있죠.

                    데이터값이 9.9862862e-01 라는 것은 9.9862862 * 10^-1 을 한 값과 같게 됩니다.
                    결국 0.99862862라는 값을 표현한 것과 같습니다.
                    대화보기
                    • Kim Wansang
                      왕료
                    • Slow-motion
                      완료
                    • fotool
                      완료
                    • Sungjin Yoo
                      영상에서는 원핫인코딩의 변수를 인코딩으로 했고, 소스코드에서는 아이리스로 했는데 차이점이 있나요?
                      그리고 실습을 하면서 모델을 돌려보니 데이터 값이 9.9862862e-01 이렇게 나오는데 e가 무엇인가요.. e를 검색해보려해도 뭘 검색해야할지를 몰라서 질문 남깁니다.
                    • 완료
                    • 완료
                    • 완료
                    • 행복
                      완료
                    • 묵사마
                      완료
                    • 묵사마
                      완료
                    • 힁스
                      완료
                    • changkr28
                      완료
                    • 밀리
                      완료
                    • So-ra Jung
                      완료
                    • Hyong Seok Yoon
                      완료!
                    • 완료
                    • NE Lee
                      완료
                    • 디자인하는 남자
                      원핫코딩으로...
                      범주형데이터의 종속변수가 1,0 형태의 열(column)로 변환되는 걸...
                      head코드로 직접 확인하니...
                      정말 신비롭고 경이로운 느낌이...^^
                    • 완료!
                    • 잔칫집국밥
                      완료
                    • 이제부터야
                      완료!
                    • 신나라
                      완료!
                    버전 관리
                    이선비
                    현재 버전
                    선택 버전
                    graphittie 자세히 보기