문제 1.

  1. x .손실함수를 최적화. 정확도 = 모델이 예측한 값과 실제 값이 얼마나일치하는지
  2. x 기본값이 0인데 , 고러면 모멘텀 최적화를 사용하지 않는것
  3. x 훈련 과정
  4. x. flatten : 1차원으로 변형, dense : 입력 데이터의 차원 유지
  5. o
  6. x : 하이퍼파라미터는 사람이 지정해줘야하는 파라미터

문제 2.

  1. • 시그모이드 함수 : 미분하면 기울기 0인 그래프. 역전파 과정에서 기울기 소실 문제 발생 가능. 렐루는 출력값이 항상 양수
  2. • 문제 : EarlyStopping 콜백과 ModelCheckpoint 콜백을 함께 사용하는 것.

→ EarlyStopping 콜백이 훈련을 중단할 때 최선으로 판단한 가중치를 저장하도록 ModelCheckpoint 콜백을 수정. ModelCheckpoint 안에 save_best_only= True 추가

문제 3.

import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

tf.keras.utils.set_random_seed(42)
tf.config.experimental.enable_op_determinism()

iris = load_iris()
X = iris.data
y = iris.target

# StandardScaler를 이용해 데이터 전처리
ss = StandardScaler()
X = ss.fit_transform(X)

# 데이터 나누기 (test 데이터 비율 : 0.2, random_state = 42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 생성
#첫 번째 dense 층은 16개의 뉴런과 relu 활성화 함수를 사용. 두 번째 dense 층은 3개의 뉴런과 softmax 활성화 함수를 사용
model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(16, input_shape=(4,), activation='relu'),
  tf.keras.layers.Dense(3, activation='softmax')
])

# 모델 컴파일 : adam optimizer 사용, sparse categorical crossentropy 손실함수 사용, 모델 평가 지표는 정확도 사용
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 모델 학습 : X_train, y_train을 이용해 모델을 20번 학습하고, X_test와 y_test로 검증
model.fit(X_train, y_train, epochs=20, validation_data=(X_test, y_test))

# 모델 평가
test_loss, test_acc = model.evaluate(X_test, y_test)
print('Test accuracy:', test_acc)

문제4.