ذخیره مدل یادگیری عمیق در کرس — به زبان ساده

آموزش دادن یک مدل شبکه عصبی/یادگیری عمیق معمولا زمان زیادی می‌برد؛ به ویژه هنگامی که ظرفیت سخت‌افزاری سیستم با نیازها تطبیق نداشته باشد. هنگامی که آموزش انجام شد، مدل در یک فایل ذخیره می‌شد. برای استفاده مجدد از مدل در زمانی دیگر، مدل بارگذاری شده ذخیره می‌شود. مدل های موجود در کتابخانه «کرس» (Keras) به سه شکل قابل ذخیره‌سازی هستند.

فایل‌های YAML و JSON تنها ساختار فایل را ذخیره می‌کنند؛ در حالی که فایل HDF5 مدل شبکه عصبی کامل را همراه با ساختار و وزن ذخیره می‌کند. بنابراین، اگر ساختار مدل با استفاده از قابل YAML یا JSON ذخیره شود، وزن‌ها باید در یک فایل HDF5 برای ذخیره‌سازی کل مدل ذخیره شوند. در ادامه، مجموعه داده قیمت‌های خانه بوستون (Boston House Prices Dataset) برای انجام یک مثال مورد استفاده قرار می‌گیرد. قطعه کد اول، مربوط به بارگذاری مجموعه داده و «پیش‌پردازش داده‌ها» (Data Preprocessing) است.

قطعه کد اول: بارگذاری مجموعه داده و پیش‌پردازش داده‌ها

import keras 
from keras.datasets import boston_housing 
  
(train_data, train_targets), (test_data, test_targets)= boston_housing.load_data() 
  
mean = train_data.mean(axis = 0) 
train_data-= mean 
std = train_data.std(axis = 0) 
  
train_data/= std 
test_data-= mean 
test_data/= std

قطعه کد دوم: آموزش دادن یک مدل شبکه عصبی روی آن

from keras import models 
from keras import layers 
  
model = models.Sequential() 
model.add(layers.Dense(64, activation ="relu", input_shape =(train_data.shape[1], ))) 
model.add(layers.Dense(64, activation ="relu")) 
model.add(layers.Dense(1)) 
model.compile(optimizer ="rmsprop", loss ="mse", metrics =["mae"]) 
loss, accuracy = model.evaluate(test_data, test_targets)

قطعه کد سوم: ذخیره‌سازی و بارگذاری مدل در فرمت فایل HDF5

from keras.models import load_model 
model.save("network.h5") 
loaded_model = load_model("network.h5") 
loss, accuracy = loaded_model.evaluate(test_data, test_targets)

قطعه کد چهارم: ذخیره‌سازی و بارگذاری مجدد مدل در فرمت فایل جیسون

# Saving model structure to a JSON file 
  
model_json = model.to_json() # with open("network.json", "w") as json_file: 
    json_file.write(model_json) 
  
# Saving weights of the model to a HDF5 file 
model.save_weights("network.h5") 
  
# Loading JSON file  
json_file = open("network.json", 'r') 
loaded_model_json = json_file.read() 
json_file.close() 
loaded_model = model_from_json(loaded_model_json) 
  
# Loading weights 
loaded_model.load_weights("network.h5") 
loss, accuracy = loaded_model.evaluate(test_data, test_targets)

قطعه کد چهارم: ذخیره‌سازی و بارگذاری مدل در فرمت فایل YAML

# Saving model structure to a YAML file 
model_yaml = model.to_yaml()  
with open("network.yaml", "w") as yaml_file: 
    yaml_file.write(model_yaml) 
  
# Saving weights of the model to a HDF5 file 
model.save_weights("network.h5") 
  
# Loading YAML file  
yaml_file = open("network.yaml", 'r') 
loaded_model_yaml = yaml_file.read() 
yaml_file.close() 
loaded_model = model_from_yaml(loaded_model_yaml) 
  
# Loading weights 
loaded_model.load_weights("network.h5") 
loss, accuracy = loaded_model.evaluate(test_data, test_targets)

منبع [+]

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *