본문 바로가기
카테고리 없음

[인프런] 텐서플로 개발자 자격증 취득 2

by 훨훨날아 2022. 10. 8.

이미지 정규화

모든이미지는 0~255의 숫자로 되어있다. 8bits 흑백사진

모든 픽셀값이 0~1사이 값을 가지도록 한다 -> 정규화 normalization.

x_train.min(), x_train.max() -> 0과 255나타낸다. 

x값을 255로 나눠준다. x_train -> x_train/255    x_valid -> x_valid /255

정규화를 하는 이유
- 정규화를 하면 학습시 수렴하는 속도가 빨라진다. 데이터가 분산된 정도에 따라 수렴하는 속도가 달라질 수 있다.
- 이미지 데이터의 경우에는 0~255라는 한계범위를 알고 있기 때문에 정규화를 시켜준다.
- 하지만 이상치가 있는 경우에는 정규화가 안좋은 영향을 끼칠 수 있다.

원핫인코딩

봄, 여름, 가을, 겨울 -> 컴퓨터는 글자를 인식할 수 없어서 숫자로 바꿔야한다.
그럼 봄여름가을겨울을 1,2,3,4 로 설정하면 안될까? 그렇게 되면 1+2 =3 이라는 관계를 생각해서 오류가 발생한다.
그렇기 때문에 [1,0,0,0] [0,1,0,0] 과 같이 하나의 라이블 값에 대해서 독립적인 값을 만들어줘야한다. 하나의 레이블만 핫 하게 만드는 방법

활성함수 activation function

선형함수 Dense 만 쌓게 되면 선형x선형 = 선형이기 때문에 딥러닝의 의미가 줄어든다 ( =복잡한 문제를 풀지 못한다)
선형과 비선형 함수를 섞어주면 복잡한 문제를 더 잘 풀 수 있다.

relu, sigmoid, softmax

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=28,28)),
tf.keras.layers.Dense(512),
tf.keras.layers.LeRu(),
tf.keras.layers.Dense(512),
tf.keras.layers.LeRu(),
tf.keras.layers.Dense(10),
tf.keras.layers.Softmax(), ]) 와 같이 쓰는 것을 다음처럼 줄일 수 있다.

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=28,28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax'),
])

relu함수 이외의 함수들을 사용할 경우 그라디언트 소실이 있어서 relu를 주로 쓴다.

그외의 함수들
https://www.tensorflow.org/api_docs/python/tf/keras/activations

 

Module: tf.keras.activations  |  TensorFlow v2.10.0

Built-in activation functions.

www.tensorflow.org

 

 

분류모델에서는 마지막층에 softmax혹은 sigmoid 활성함수가 와야한다.

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=28,28)),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax'), or tf.keras.layers.Dense(10, activation='sigmoid'),
])

이진분류 binary classification 에서 활성함수에 따라 loss 를 다르게 사용한다.

Dense(1, activation = 'sigmoid') -> loss = 'binary_crossentorpy' 를 사용하고
Dense(2 이상, activation = 'softmax'0 -> loss = 'cartegorical_crossentroypy' (원핫 가능)혹은 'sparse_cartegorical_crossentorpy'사용 (원핫 불가능)

시스모이드는 모든 x 값에 대해 0과 1 사이의 값(확률로 )으로 만들 수 있다. (기준 하나를 설정하면 반드시 2가지를 구분할 수 있다)

소프트맥스는 각각에 대한 확률값을 모두 비교해서 가장 큰 값을 해당 클래스로 정한다. 모든 확률의 합은 반드시 1이된다.

 

 

https://inf.run/4D57

 

Google 공인! 텐서플로(TensorFlow) 개발자 자격증 취득 - 인프런 | 강의

자격증 취득을 위한 내용으로만 구성되었기 때문에 텐서플로우나 딥러닝 프레임워크에 대한 이해가 없으셔도 관계 없습니다. 여러분의 자격증 단기 취득을 위한 강의로 짧고 굵게 알려드릴 예

www.inflearn.com

 

 

반응형