일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JavaScript
- 머신러닝(딥러닝)
- 카카오클라우드스쿨2기
- 생활코딩 데이터베이스
- reshape
- 개발자
- CNN
- 딥러닝
- LeNet
- Python
- 판다스
- 야학
- pandas
- 파이썬
- 생활코딩 머신러닝야학
- 데이터베이스
- 머신러닝
- 연산자
- MySQL
- Database
- tensorflow
- 데이터베이서
- 생활코딩
- flatten
- 머신러닝야학
- 데이터베이스 개론
- Java
- 이것이 자바다
- Today
- Total
IT's 우
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 1- Flatten 본문
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 1- Flatten
디우 2021. 1. 16. 02:01이미지셋 데이터를 표 형태의 데이터로 변형해서 학습하기
딥러닝 모델의 "특징 자동 추출기"라는 별명의 의미 이해하기
이미지 셋 -> 데이터 표 , 두 가지 방법(reshape, flatten)
print(독립.shape)
#(60000, 28, 28)
① reshape
#이미지셋 데이터를 표 형태의 데이터로 변형하기 위해
#reshape를 사용한다.
독립.reshape(60000, 784)
print(독립.shape)
#(60000,784)
# 모델을 만들고
X = tf.keras.layers.Input(shape=[784])
H= tf.keras.layers.Dense(84, activation='swish')(X)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model= tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
② Flatten
print(독립.shape)
#(60000, 28, 28)
#모델을 만들고
X = tf.keras.layers.Input(shape=[28, 28])
# Flatten 데이터를 한 줄로 펴준다.
H = tf.keras.layers.Flatten()(X)
H= tf.keras.layers.Dense(84, activation='swish')(H)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model= tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
?????인공신경망 = "특징 자동 추출기"?????
히든 레이어 없이 모델을 만들었다면 출력층의 첫 번째 결과는 입력층 노드의 모든 입력에 가중치를 붙여서 판단하게 된다. 모든 픽셀 값에 대해 가중치를 학습하게 된다는 것이다.
학습이 끝났을 때 출력 값을 판단하기에 가중치가 높다는 것은 해당 픽셀 값이 매우 중요하다는 의미,
반대로 가중치가 낮다는 것은 해당 픽셀값이 쓸모없다는 의미
히든 레이어를 사용한다면 첫 번째 결과를 판단하기 위한 수식에서 히든 레이어의 모든 노드가 입력으로 사용되는 것이고, 모든 입력에 가중치를 붙여서 판단하게 된다. 히든레이어의 결과는 인공신경망 구조 안에서 가중치 학습을 통해 컴퓨터 스스로 만들어 낸 값이다. 이러한 은닉층을 추가한 행동은 최종 결과를 판단하기 위해 컴퓨터에게 가장 중요한 특징을 찾도록 하는 것이다.
◎소스코드
1. 데이터를 reshape를 사용하여 이미지 셋 데이터를 표형태의 데이터로 바꾸어 모델 만들기
예상 값과 비교해보기!
2. 데이터를 flatten 사용하여 이미지셋 데이터를 표형태의 데이터로 바꾸어 모델 만들기
◎ 전체 소스코드
###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd
###########################
# with reshape
# 데이터를 준비하고, 이미지 셋을 표로 만들어주기
(독립, 종속), _ = tf.keras.datasets.mnist.load_data()
독립 = 독립.reshape(60000, 784)
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
# 모델을 만들고
X = tf.keras.layers.Input(shape=[784])
H = tf.keras.layers.Dense(84, activation='swish')(X)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
# 모델을 학습하고
model.fit(독립, 종속, epochs=10)
# 모델을 이용합니다.
pred = model.predict(독립[0:5])
print(pd.DataFrame(pred).round(2))
print(종속[0:5])
###########################
# with flatten
# 데이터를 준비하고
(독립, 종속), _ = tf.keras.datasets.mnist.load_data()
# 독립 = 독립.reshape(60000, 784)
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
# 모델을 만들고
X = tf.keras.layers.Input(shape=[28, 28])
H = tf.keras.layers.Flatten()(X)
H = tf.keras.layers.Dense(84, activation='swish')(H)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
# 모델을 학습하고
model.fit(독립, 종속, epochs=10)
# 모델을 이용합니다.
pred = model.predict(독립[0:5])
print(pd.DataFrame(pred).round(2))
print(종속[0:5])
출처: www.opentutorials.org/module/5268/29787
'생활코딩 > 머신러닝(텐서플로우(python))' 카테고리의 다른 글
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 3 - MaxPool2D (0) | 2021.01.18 |
---|---|
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 2 - Conv2D (0) | 2021.01.17 |
생활코딩 머신러닝야학_Tensorflow 102 -이미지 분류(CNN)/ 데이터와 차원 (0) | 2021.01.15 |
생활코딩 머신러닝야학_부록2: 모델을 위한 팁, BatchNormalization layer (0) | 2021.01.15 |
생활코딩, 머신러닝야학_데이터를 위한 팁(astype(), dtypes, isna().sum(), fillna()) (0) | 2021.01.15 |