더 넓은 네트워크 실험하기
이제 다양한 모델로 실험을 시작하는 데 필요한 모든 것을 알고 계세요!
model_1이라는 모델이 미리 로드되어 있으며, IPython Shell에 이 모델의 요약이 출력됩니다. 이 모델은 각 은닉층에 10개의 유닛만 있는 비교적 작은 네트워크입니다.
이번 연습에서는 model_1과 유사하지만 각 은닉층에 100개의 유닛을 가지는 model_2를 만드실 거예요.
model_2를 만든 뒤 두 모델을 모두 학습시키고, 에포크별 손실 점수를 나란히 보여주는 그래프를 확인합니다. 텍스트 출력 대신 그래프로 확인할 것이므로, 학습 명령에는 업데이트 출력을 줄이기 위해 verbose=False 인자를 추가했습니다.
두 개의 모델을 학습하므로 '코드 실행' 후 결과가 나타나기까지 시간이 조금 걸릴 수 있어요. 잠시만 기다려 주세요.
이 연습은 강의의 일부입니다
Python으로 시작하는 Deep Learning
연습 안내
model_2를 만들어model_1을 복제하되,'relu'활성화를 사용하는 처음 두 개의Dense레이어에서 노드 수를10대신100으로 설정하세요. 출력용Dense레이어는 노드 수를2, 활성화는'softmax'로 사용하세요.- 이전과 동일하게
model_2를 컴파일하세요:optimizer는'adam',loss는'categorical_crossentropy', 그리고metrics=['accuracy']를 사용합니다. - 두 모델을 학습하고 어느 쪽이 더 좋은 결과를 내는지 시각화하려면 'Submit Answer'를 눌러 주세요!
model.fit()의 키워드 인자verbose=False에 주목하세요. 텍스트 대신 그래프로 모델을 평가할 것이므로 출력 메시지를 줄여 줍니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Define early_stopping_monitor
early_stopping_monitor = EarlyStopping(patience=2)
# Create the new model: model_2
model_2 = ____
# Add the first and second layers
____.____(____(____, ____=____, input_shape=input_shape))
____
# Add the output layer
____
# Compile model_2
____
# Fit model_1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Fit model_2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Create the plot
plt.plot(model_1_training.history['val_loss'], 'r', model_2_training.history['val_loss'], 'b')
plt.xlabel('Epochs')
plt.ylabel('Validation score')
plt.show()