iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
AI & Data

AI初見 從零開始的TensorFlow生活系列 第 21

DAY21 - 迴歸問題 - 房價預測模型 - 4

  • 分享至 

  • xImage
  •  

大家好,昨天將資料進行標準化,並且準備好要用來訓練的資料,今天就要建立與訓練模型。

這個房價預測模型要使用的是之前講過的Sequential Model,建構這個模型所需的架構只會使用到全連接層,將會由三層全連接層組成。昨天有提到資料輸入的維度是21,所以在輸入層設定input_shape(21,)。然後隱藏層使用的激活函數是ReLU,而輸出層不使用激活函數。

model = tf.keras.Sequential('m1')
model.add(keras.layers.Dense(64, activation='relu', input_shape=(21,))) 
model.add(keras.layers.Dense(64, activation='relu')) 
model.add(keras.layers.Dense(1)) 

接著要設定優化器、損失函數、指數函數,優化器使用Adam;損失函數使用均方誤差(mean square error ,MSE);指數函數使用平均絕對誤差(mean absolute error, MAE)。

model.compile(keras.optimizers.Adam(0.001),
loss=keras.losses.MeanSquaredError(),
metrics=[keras.metrics.MeanAbsoluteError()])

再來要建立模型的儲存位置,會用到之前還沒匯入的套件os。

import os
model_dir = 'models/m1/' 
os.makedirs(model_dir)

然後設定回調函數,

log_dir = os.path.join('models', 'm1') model_cbk=keras.callbacks.TensorBoard(log_dir=log_dir)
model_mckp=keras.callbacks.ModelCheckpoint(model_dir+'/Best-model-1.h5',
monitor='val_mean_absolute_error',
save_best_only=True,
mode='min')

最後就是開始訓練模型,將用來訓練的資料傳入,輸入層設定有64個unit,所以批次傳入資料也設定為64,然後訓練300次,再設定用來驗證的資料,並用回調函數儲存最好的模型。

history = model.fit(x_train, y_train,
batch_size=64,  
epochs=300, 
validation_data=(x_val, y_val),  
callbacks=[model_cbk, model_mckp])

上一篇
DAY20 - 迴歸問題 - 房價預測模型 - 3
下一篇
DAY22 - 迴歸問題 - 房價預測模型 - 5
系列文
AI初見 從零開始的TensorFlow生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言