본문 바로가기
● 인공지능, 분석/20.08 생코_머신러닝

생활코딩_tensorflow_Hidden Layer

by 0ver-grow 2020. 8. 20.
반응형

 

 

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

수업소개 히든레이어와 멀티레이어의 구조를 이해하고, 히든레이어를 추가한 멀티레이어 인공신경망 모델을 완성해 봅니다.  강의  멀티레이어 신경망 실습  소스코드 colab |  backend.ai 보스

opentutorials.org

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

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

 

기존에는 퍼셉트론 하나로만 구성되어 있었으나

이제는 퍼셉트론이 깊게 연결된 딥러닝 모델을 제작해본다.

 

퍼셉트론을 깊게 연결하는 방법은 간단하다.

기존 퍼셉트론을 여러개 연결하면 된다.

입력과 출력 사이에 퍼셉트론을 추가하면 된다.

 

현재 입력과 출력 사이에 하나의 층을 쌓아서 모델을 구성했다.

추가한 레이어는 5개의 노드를 가졌다.

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

 

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

총 5개의 노드가 있기에 5개의 퍼셉트론이 필요하다.

Boston house price Data

관측치 : 506

독립변수칼럼 : 13

종속변수칼럼 : 1

5개의 입력, 1개의 출력
13개의 입력, 5개의 출력

각각의 모델을 연속적으로 연결하여 하나의 거대한 신경망을 만드는 것이 딥러닝,인공신경망이다.

 

텐서플로우는 이 구조를 쉽게 만들 수 있게 해준다.

swish는 최근에 발표된 활성화함수

히든레이어를 2개 더 쌓아보자

각 히든레이어는 3개의 노드를 가지고 있다.

 


실습하기

import tensorflow as tf
import pandas as pd

file_path = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv'
보스턴 = pd.read_csv(file_path)

# 종속변수, 독립변수
독립 = 보스턴[['crim', 'zn', 'indus', 'chas', 'nox', 
            'rm', 'age', 'dis', 'rad', 'tax',
            'ptratio', 'b', 'lstat']]
종속 = 보스턴[['medv']]
print(독립.shape, 종속.shape)
X = tf.keras.layers.Input(shape=[13])
# 10개의 노드를 가진 1개의 인공신경망을 추가.
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')
# Checking Model
model.summary()

노드 y1 : (입력12개) 항이 12개, Bios 1개 => 13개 // 노드 y2 : (입력12개) 항이 12개, Bios 1개 => 13개

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

# Using Model
print(model.predict(독립[:5]))
print(종속[:5])

# 아이리스 품종 '분류'
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv'
아이리스 = pd.read_csv(파일경로)

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

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

# Make Model Structure
X = tf.keras.layers.Input(shape=[4])
# Hiden Layer 3, Each Node 8
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')
              
# Checking Model
model.summary()

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

# 4. Using Model
print(model.predict(독립[:5]))
print(종속[:5])

반응형