728x90
반응형
SMALL
Transfering to a Regression Network
Iris 비용 데이터 세트에는 원래 Iris 데이터 세트에 포함된 예측 변수인 꽃받침 너비, 꽃받침 길이, 꽃잎 너비 및 꽃잎 길이에 부합하는 꽃 샘플에 대한 측정값이 있다. 여기에 비용 데이터 세트가 표시된다.
import pandas as pd
df_cost = pd.read_csv("https://data.heatonresearch.com/data/t81-558/iris_cost.csv", na_values=['NA', '?'])
df_cost
전이 학습이 효과적이려면 새로 훈련된 신경망의 입력이 처음 전송한 신경망에 가장 가깝게 일치해야 한다.
이 최종 분류를 수행하는 소프트맥스 활성화 함수가 포함된 마지막 출력 계층을 제거한다. 비용 예측을 출력할 새로운 출력 계층을 생성합니다. 이 새 레이어에서 가중치만 훈련한다. 처음 두 개의 레이어는 훈련할 수 없는 것으로 표시한다.
이 과정은 처음 몇 개의 레이어를 반복하여 새 신경망에 복사함으로써 이루어진다. 새로운 신경망의 요약을 출력하여 Keras가 이전 출력 레이어를 제거했는지 확인한다.
model3 = Sequential()
for i in range(2):
layer = model.layers[i]
layer.trainable = False
model3.add(layer)
model3.summary()
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 50) 250
dense_1 (Dense) (None, 25) 1275
=================================================================
Total params: 1525 (5.96 KB)
Trainable params: 0 (0.00 Byte)
Non-trainable params: 1525 (5.96 KB)
_________________________________________________________________
최종 회귀 출력 레이어를 추가하여 새로운 신경망을 완성한다.
model3.add(Dense(1)) # 출력
model3.compile(loss='mean_squared_error', optimizer='adam')
model3.summary()
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 50) 250
dense_1 (Dense) (None, 25) 1275
dense_3 (Dense) (None, 1) 26
=================================================================
Total params: 1551 (6.06 KB)
Trainable params: 26 (104.00 Byte)
Non-trainable params: 1525 (5.96 KB)
_________________________________________________________________
이제, 비용을 예측하기 위해 출력 레이어만 학습한다. 구성된 데이터 세트의 비용은 종에 따라 달라지므로 이전 학습이 도움이 될 것이다.
import numpy as np
x = df_cost[['sepal_l', 'sepal_w', 'petal_l', 'petal_w']].values
y = df_cost.cost.values
# Train the last layer of the network
model3.fit(x, y, verbose=2, epochs=100)
이전 모델에서 전송된 레이어가 포함된 새 모델에 대한 샘플 내 RMSE를 평가할 수 있다.
from sklearn.metrics import accuracy_score
pred = model3.predict(x)
score = np.sqrt(metrics.mean_squared_error(pred, y))
print(f"최종 점수 (RMSE): {score}")
8/8 [==============================] - 0s 7ms/step
최종 점수 (RMSE): 1.559858922311059
728x90
반응형
LIST
'DNN with Keras > Transfer Learning' 카테고리의 다른 글
조기 중지의 이점 (0) | 2024.02.13 |
---|---|
Transfer Learning for NLP with Keras (0) | 2024.02.13 |
네트워크 생성 및 가중치 전송 (0) | 2024.02.13 |
Keras Transfer Learning for Computer Vision (0) | 2024.02.13 |
전이 학습 (Transfer Learning) (0) | 2024.02.13 |