IT's 우

생활코딩, 머신러닝(딥러닝)_네번째 딥러닝 - 신경망의 완성:히든레이어 본문

생활코딩/머신러닝(텐서플로우(python))

생활코딩, 머신러닝(딥러닝)_네번째 딥러닝 - 신경망의 완성:히든레이어

디우 2021. 1. 14. 23:55
728x90

히든 레이어와 멀티레이어의 구조를 이해하고,

히든 레이어를 추가한 멀티레이어 인공신경망 모델을 완성해보자.

 

입력 부분을 InputLayer, 출력부분을 OutputLayer라고 한다.

결과를 얻기위해서 히든 레이어의 모든 값들을 입력으로 하는 하나의 퍼셉트론이 필요하다.

히든 레이어의 첫 번째 결과를 만들기 위해서는 하나의 퍼셉트론이 필요하다.

히든 레이어에 총 5개의 노드가 있으니 5개의 퍼셉트론이 필요하다.

 

 

 

히든 레이어의 활성화 함수로 'swish'를 사용함.

히든 레이어를 3개 사용한 모델.

첫 번째 히든 레이어는 5개의 노드,

두 번째, 세 번째 히든 레이어는 3개의 노드를 가진 모델.

최종 한 개의 출력을 만든다.

 

히든 레이어를 사용하여 학습시키면 훨씬 더 똑똑한 모델을 학습시킬 수 있다.

 

 

 

-소스코드, 결과

보스턴 집값 예측, 범위형 데이터-회귀: https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv

# 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)합니다. loss값이 학습을 통해 낮아지는 것을 확인 가능

model.fit(독립, 종속, epochs=1000, verbose=0)

model.fit(독립, 종속, epochs=10)

# 4. 모델을 이용합니다. 학습을 통해 비슷한 값을 출력해낸 것을 알 수 있다.

print(model.predict(독립[:5]))

print(종속[:5])

아이리스 품종 분류, 범주형 데이터-분류: https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv

# 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'])

 

# 3. 데이터로 모델을 학습(FIT)합니다. 학습을 통하여 loss값이 줄어드는 것 확인 

model.fit(독립, 종속, epochs=100)

# 4. 모델을 이용합니다. 학습을 통해 비슷한 값을 출력해낸 것을 알 수 있다.

print(model.predict(독립[0:5]))

print(종속[0:5])

########전체 소스코드########

보스턴 집값 예측
##########################
# 라이브러리 사용
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])

 

 

출처: 생활코딩

728x90
반응형