머신러닝 야학 정리
신경망을 깊게 만드는 방법
⇒ 기존의 퍼셉트론을 여러개 사용하여 연결만 하면 된다.
⇒ 입력과 결과사이에 퍼셉트론들을 추가해주면 된다.
- 입력 부분 - Input Layer, 출력 부분 - Output Layer
- 입력과 출력 사이 추가한 부분 - Hidden Layer
결과를 만들기 위해서는 히든 레이어의 모든 값들을 입력으로 하는 하나의 퍼셉트론 필요
히든 레이어의 첫번째 결과를 만들기 위해 하나의 퍼셉트론 필요
⇒ 총 5개의 노드가 있으니 5개의 퍼셉트론 필요
- 데이터의 관점 (ex. 보스턴 집값 총 506개의 데이터)
입력 : 독립변수로 13개의 칼럼을 가진 데이터 , (506,13)
출력 : 종속변수로 1개의 칼럼을 가진 데이터, (506,1)
히든 레이어 : 5개의 칼럼을 가진 데이터, (506, 5)
- 히든 레이어→출력
⇒ 5개의 입력을 받고 1개의 출력을 만드는 모델
- 입력→히든 레이어
⇒ 13개의 입력을 받고 5개의 출력을 만드는 모델
각각의 모델을 연속적으로 연결하여 거대한 신경망을 만드는것
⇒ 딥러닝(인공신경망)
# 2.모델의 구조 - 히든 레이어 추가
X = tf.keras.layers.Input(shape=[13])
H = tf.keras.layers.Dense(5, activation='swish')(X)
Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X,Y)
model.compile(loss='mse')
주의 - 마지막 출력을 넣을 때 X를 넣으면 안되고 마지막 히든 레이어에서 만들어진 H를 넣어주어야 함
- 히든 레이어 활성화 함수 : swish
# 히든 레이어 2층 더 쌓아보기
X = tf.keras.layers.Input(shape=[13])
H = tf.keras.layers.Dense(5, activation='swish')(X)
H = tf.keras.layers.Dense(3, activation='swish')(H)
H = tf.keras.layers.Dense(3, activation='swish')(H)
Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X,Y)
model.compile(loss='mse')
+ 실습
# 1. Boston
import tensorflow as tf
import pandas as pd
file_path = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv'
boston = pd.read_csv(file_path)
독립 = boston[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax',
'ptratio', 'b', 'lstat']]
종속 = boston[['medv']]
print(독립.shape, 종속.shape)
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.fit(독립, 종속, epochs=1000, verbose=0)
model.fit(독립, 종속, epochs=10)
# 멀티 레이어 학습에 대한 확인
model.summary()
- Param → 가중치
- 13 + 항 1개 = 14 * 10 = 140
- 10 + 항 1개 = 11 * 1 = 11
print(model.predict(독립[:5]))
print(종속[:5])
# 2. iris
file_path = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv'
iris = pd.read_csv(file_path)
iris = pd.get_dummies(iris)
독립 = iris[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']]
종속 = iris[['품종_setosa', '품종_versicolor','품종_virginica']]
print(독립.shape, 종속.shape)
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.fit(독립, 종속, epochs=10)
print(model.predict(독립[0:5]))
print(종속[0:5])
'머신러닝 > Tensorflow 기초' 카테고리의 다른 글
+ 머신러닝 마무리 (0) | 2021.01.21 |
---|---|
3. 아이리스 품종 분류 (0) | 2021.01.19 |
+ 딥러닝 학습의 원리 (0) | 2021.01.15 |
2. 보스턴 집값 예측 (0) | 2021.01.14 |
1. 레모네이드 판매 예측 (1) | 2021.01.13 |