본문 바로가기
혼공학습단(한빛미디어)

[혼공단 10기] 혼자 공부하는 머신러닝 + 딥러닝(혼공머신) - 6주차(fin)

by #FF0000 2023. 8. 19.

혼공단10기 - 혼자 공부하는 머신러닝 + 딥러닝(혼공머신)

7장. 딥러닝 

 

텐서플로(TensorFlow)

구글 브레인팀이  2015년 11월 9일 공개한, 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리로

인공 신경망 및 딥러닝(deep Learning)에 사용 중인 라이브러리. 

 

# 텐서플로우 초보자 학습 코드
import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

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

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

예제 코드 출처 : tensrflow 공식 홈페이지 (https://www.tensorflow.org/overview?hl=ko)

 

TensorFlow Core | 초보자 및 전문가를 위한 머신러닝

연구자, 실무자, 학생, 개발자 커뮤니티에서 지원하는 오픈소스 ML 라이브러리로 나만의 머신러닝 프로젝트를 시작하세요.

www.tensorflow.org

 

Sequential() : keras에서 신경망 모델을 만드는 클래스로, 신경망 모델에 추가할 층을 지정.

  • input_shape에 입력의 크기 지정

Dense() : 밀집층을 만드는 클래스로, 첫 번째 매개변수에 뉴런의 개수를 지정.

  •  activation에 사용할 활성화 함수를 지정

Compile() : 모델 객체 생성 후, 훈련하기 전에 사용할 손실 함수와 측정 지표를 지정

 

fit() : 모델을 훈련.

  • epochs : 반복할 에포크 횟수 지정

evaluate() : 모델 성능을 평가. 

  • loss : 손실 함수 지정,
  • metrics : 측정 지표 지정

 

<예제 코드 해석>

Flatten() :  입력을 1차원 배열로 변경. 입력의 차원은 (28, 28)로 지정.

Dense() :  128개로 출력,  활성화 함수로 'relu' 사용.

Dense() :  10개로 출력,  활성화 함수로 'softmax' 사용.

complile()최적화 optimizer로 'adam'. 손실 함수로 'sparese_categorical_crossentropy' 지정

→ (28, 28)형태의 이미지를 784크기의 형태로 변환하여 10개의 출력으로 확률을 나타냄.

       (10개의 출력은 0일 확률 , 1일 확률, 2일 확률 ... 9일 확률의 10개의 값)

 

 

 

기본 미션: 7-1 확인 문제 풀이

07-1 인공신경망 

 

확인문제.

 

Q1, 어떤 인공 신경망의 입력 특성이 100개이고, 밀집층에 있는 뉴런 개수가 10개일 때, 필요한 모델 파라미터의 개수는?

▶ 1010개

sol) 가중치 : 100 x 10 = 1000

       절편 : 10 x 1 = 10

       → 파라미터 : 1000 + 10 = 1010

 

Q2. 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들 때(신경망은 이진 분류 모델) activation 매개변수에 사용할 활성화 함수는?

▶ sigmoid 함수

 

Q3. 케라스 모델에서 손실 함수와 측정 지표를 지정하는 메서드는?

▶ compile

 

Q4. 정수 레이블을 타킷으로 가지는 다중 분류 문제일 때, 케라스 모델의 compile() 메서드에 지정할 손실 함수는?

▶ sparse_categorical_crossentrropy

 

 

 

선택 미션: 7-2 확인 문제 풀이

07-2 심층 신경망

 

확인문제

 

Q1, 모델의 add() 메서드 사용법

▶ model.add(keras.layers.Dense(10, activation='relu'))

 

Q2. 크기가 300x300인 입력을 케라스 층으로 펼칠 시 사용할 층은?

▶ Flatten

 

Q3. 이미지 분류를 위한 심층 신경망에서 널리 사용되는 케라스의 활성화 함수는?

▶ relu

 

Q4. 적응적 학습률을 사용하지 않는 옵티마이저는?

▶ SGD