Tensorflow 101

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

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

네번째 딥러닝 - 신경망의 완성:히든레이어

수업소개

히든레이어와 멀티레이어의 구조를 이해하고, 히든레이어를 추가한 멀티레이어 인공신경망 모델을 완성해 봅니다. 

강의 

 

멀티레이어 신경망

 

실습 

 

소스코드

colab |  backend.ai

보스턴 집값 예측

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

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

# 종속변수, 독립변수
독립 = 보스턴[['crim', 'zn', 'indus', 'chas', 'nox', 
            'rm', 'age', 'dis', 'rad', 'tax',
            'ptratio', 'b', 'lstat']]
종속 = 보스턴[['medv']]
print(독립.shape, 종속.shape)

###########################
# 2. 모델의 구조를 만듭니다
X = tf.keras.layers.Input(shape=[13])
H = tf.keras.layers.Dense(10, activation='swish')(X)
Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')

# 모델 구조 확인
model.summary()

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

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

###########################
# 모델의 수식 확인
print(model.get_weights())

아이리스 품종 분류

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

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

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

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

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

# 모델 구조 확인
model.summary()

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

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

 

댓글

댓글 본문
  1. Sansol Park
    안녕하세요! TensorFlow를 사용해 딥러닝을 공부하고 계시다니 멋집니다. 질문 주신 내용에 대해 답변드리겠습니다.

    딥러닝 모델은 일반적으로 입력 데이터의 각 특성(피처)에 대해 자동으로 가중치를 학습합니다. 따라서 특정 컬럼(피처)에 우선순위를 직접 설정하는 기능은 기본적으로 제공되지 않습니다. 하지만, 몇 가지 방법을 통해 특정 피처에 더 높은 가중치를 줄 수 있는 방법이 있습니다.

    ### 1. **피처 스케일링** (Feature Scaling)
    피처의 값 범위를 조정하여 모델이 특정 피처에 더 큰 가중치를 두도록 유도할 수 있습니다. 예를 들어, 중요한 피처의 값을 더 크게 조정하면 모델이 해당 피처를 더 중요하게 생각할 가능성이 높아집니다. 하지만 이 방법은 간접적이므로, 모델이 반드시 그 피처에 더 높은 가중치를 두는 것은 아닙니다.

    ### 2. **피처의 복제** (Feature Duplication)
    중요한 피처를 여러 번 복제하여 입력 데이터에 추가하는 방법입니다. 예를 들어, '꽃잎길이' 피처가 중요하다면, 이를 복제하여 입력으로 사용하면 모델이 이 피처를 더 중요하게 학습할 가능성이 있습니다.

    ### 3. **커스텀 손실 함수** (Custom Loss Function)
    손실 함수에서 특정 피처에 대한 가중치를 높이는 방법도 있습니다. 하지만 이 방법은 손실 함수의 정의와 설계가 복잡할 수 있으므로, 초보자에게는 다소 어려울 수 있습니다.

    ### 4. **특정 레이어에 가중치 초기화** (Custom Layer Initialization)
    모델의 첫 번째 Dense 레이어에서 특정 피처에 대한 가중치를 초기화하는 방법도 있습니다. 예를 들어, 가중치 초기화 시 중요한 피처에 높은 가중치를 주도록 설정할 수 있습니다.

    ### 결론
    위와 같은 방법들을 통해 특정 피처에 우선순위를 줄 수 있지만, 딥러닝 모델의 본질은 데이터를 기반으로 자동으로 패턴을 학습하는 것입니다. 따라서 이런 수작업적인 조작보다는 충분한 데이터로 학습시키고, 필요시 피처 엔지니어링을 통해 모델이 원하는 대로 학습되도록 유도하는 것이 더 좋을 수 있습니다.

    추가 질문이 있으시면 언제든지 댓글로 남겨주세요!
    대화보기
    • 시아네스
      231109.
    • dudjswp
      안녕하세요.

      올려주신 자료로 열심히 tensorflow 공부하고 있습니다.

      항상 감사합니다.

      상기 예제의 IRIS 분류와 관련해서 질문사항 있어서 댓글 올립니다.

      혹시 데이터 학습시에 특정 컬럼에 우선순위를 줄 수 있을까요 ?

      # =========================
      독립변수 = [[ '꽃잎길이' , '꽃잎폭' , '꽃받침길이' , '꽃받침폭']]
      우선순위 = [[0 ,1 ,2 ,3]]
      # =========================

      위와같이 변수별 우선순위 할당을 통해 우선순위가 높은 데이터의 유사성에 더 가중치를둬서 predict의 결과를 반환받을 수 있는지 궁금합니다.
    • kwaife
      완료
    • innerpeace
      원리를 이해하기에 가야할길이 더 많겠지만, 이렇게나 쉽게 입문시켜주셔서 감사합니다! 뜬구름 잡는 아이디어만 갖고 있었는데, 이제야 출발선에서 준비운동하고 있는 기분이예요! 감사합니다.!!!
    • 김정석
      감사합니다 재미있게 잘 배웠습니다
    • 완료
    • 인간지능
      완료!감사합니댜.
    • 김영환
      완료
    • shg7271
      210729
    • Poroporo
      완료:)
    • 한세월
      완료! 감사합니다~
    • 조예인
      감사합니다.
    • 제갈자공
      김남군 - 7/27 완료
    • Hotbrains
      완료~ 감사합니다.
    • 이덕규
      생각보다 간단한 개념이었네요!
    • songji
    • 이성민
      완료~
    • Naked Lunch
      야학 3기! 점점 인간의 뇌를 닮아가는 내 컴퓨터!
    • semin3993
      sigmoid*x=swish
    • 210721
    • minkey
      야학3기 21.07.20 완료
    • 엠제이
      잘 봤습니다. 고맙습니다.
    • 정효빈
      완료했습니다!!
    • jwoh
      21-05-06
    • 박준휘
      20210427 완료했습니다~
    • 장청룡
      20210315 완료
    • 범벌
      완료
    • 청춘낭비금물
      완료
    • ericpark
      완료했습니다.
    • Juni
      완료
    • 조지아
      완료
    • DreamComeTrue
      완료!
    • 바이크
      완료
    • agg98
      완료
    • jeseung
      완료!
    • 후니
      완료
    • 손님입장
      완료
    • nann
      완료
    • Noah
      완료
    • 차차caca
      완료!
    • 고고고고
      완료
    • 최수원
      완료!
    • 먀린이
      완료....이번 내용은 좀 어렵네요...핳하
    • 리코타
      완료
    • 궉하
      완료!
    • luckyo02
      완료
    • 코티서처
      어려우면서도 신기하다
    • John
      완료
    • 소야
      신기해요!
    버전 관리
    이선비
    현재 버전
    선택 버전
    graphittie 자세히 보기