tek4

Cách Lưu Và Load Lại Một Mô Hình Học Sâu – Keras Cơ Bản

by - September. 26, 2021
Học
Kiến thức
Machine Learning
<p style="text-align: justify;">Ch&agrave;o mừng c&aacute;c bạn quay trở lại với loạt b&agrave;i về&nbsp;<a href="https://tek4.vn/keras-co-ban-bat-dau-hoc-sau-voi-tf-keras/" target="_blank" rel="noopener">Keras Cơ Bản</a>&nbsp;của<a href="https://tek4.vn/" target="_blank" rel="noopener">&nbsp;tek4.vn</a>. Trong b&agrave;i viết n&agrave;y ch&uacute;ng ta sẽ c&ugrave;ng nhau t&igrave;m hiểu về c&aacute;ch lưu m&ocirc; h&igrave;nh v&agrave; load lại m&ocirc; h&igrave;nh học s&acirc;u để sử dụng sau đ&agrave;o tạo. Bắt đầu th&ocirc;i!</p> <p style="text-align: justify;">Xem th&ecirc;m b&agrave;i viết trước:&nbsp;<a href="https://tek4.vn/cach-ve-do-thi-duong-cong-hoc-tap-cua-mo-hinh-keras-co-ban/" target="_blank" rel="noopener">C&aacute;ch Vẽ Đồ Thị Đường Cong Học Tập Của M&ocirc; H&igrave;nh</a></p> <p><img style="width: 635px; display: block; margin-left: auto; margin-right: auto;" src="http://tek4vn.2soft.top/public_files/51-png" alt="51" height="331" /></p> <p style="text-align: justify;">Đ&agrave;o tạo v&agrave; đ&aacute;nh gi&aacute; m&ocirc; h&igrave;nh l&agrave; rất quan trọng, nhưng nếu ch&uacute;ng ta muốn sử dụng lại m&ocirc; h&igrave;nh đ&oacute; sau đ&agrave;o tạo m&agrave; kh&ocirc;ng cần phải đ&agrave;o tạo lại mỗi lần muốn sử dụng th&igrave; l&agrave;m như thế n&agrave;o?</p> <p style="text-align: justify;">Điều n&agrave;y c&oacute; thể đạt được bằng c&aacute;ch lưu m&ocirc; h&igrave;nh v&agrave;o tệp v&agrave; sau đ&oacute; tải n&oacute; v&agrave; sử dụng n&oacute; để đưa ra dự đo&aacute;n.</p> <p style="text-align: justify;">Để lưu được m&ocirc; h&igrave;nh ch&uacute;ng ta c&oacute; thể sử dụng h&agrave;m save()&nbsp;để lưu m&ocirc; h&igrave;nh. N&oacute; c&oacute; thể được tải sau bằng c&aacute;ch sử dụng h&agrave;m&nbsp;<a href="https://www.tensorflow.org/api_docs/python/tf/keras/models/load_model">load_model()</a>.</p> <p style="text-align: justify;">M&ocirc; h&igrave;nh được lưu ở định dạng H5, một định dạng lưu trữ mảng hiệu quả. Như vậy, bạn phải đảm bảo rằng thư viện h5py đ&atilde; được c&agrave;i đặt tr&ecirc;n m&aacute;y t&iacute;nh của m&igrave;nh. Để c&agrave;i h5py c&oacute; thể sử dụng pip như sau:</p> <pre class="language-python"><code>pip install h5py</code></pre> <p style="text-align: justify;">V&iacute; dụ dưới đ&acirc;y ph&ugrave; hợp với một m&ocirc; h&igrave;nh đơn giản về b&agrave;i to&aacute;n ph&acirc;n loại nhị ph&acirc;n tổng hợp v&agrave; sau đ&oacute; lưu tệp m&ocirc; h&igrave;nh.</p> <pre class="language-python"><code># example of saving a fit model from sklearn.datasets import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import SGD # create the dataset X, y = make_classification(n_samples=1000, n_features=4, n_classes=2, random_state=1) # determine the number of input features n_features = X.shape[1] # define model model = Sequential() model.add(Dense(10, activation='relu', kernel_initializer='he_normal', input_shape=(n_features,))) model.add(Dense(1, activation='sigmoid')) # compile the model sgd = SGD(learning_rate=0.001, momentum=0.8) model.compile(optimizer=sgd, loss='binary_crossentropy') # fit the model model.fit(X, y, epochs=100, batch_size=32, verbose=0, validation_split=0.3) # save model to file model.save('model.h5')</code></pre> <p style="text-align: justify;">Chạy v&iacute; dụ fits với m&ocirc; h&igrave;nh v&agrave; lưu n&oacute; v&agrave;o tệp với t&ecirc;n &lsquo;model.h5&lsquo;.</p> <p style="text-align: justify;">Sau đ&oacute;, ch&uacute;ng ta c&oacute; thể load lại m&ocirc; h&igrave;nh v&agrave; sử dụng n&oacute; để đưa ra dự đo&aacute;n, hoặc tiếp tục đ&agrave;o tạo n&oacute;, hoặc l&agrave;m bất cứ điều g&igrave; ch&uacute;ng ta muốn với n&oacute;.</p> <p style="text-align: justify;">V&iacute; dụ b&ecirc;n dưới load lại m&ocirc; h&igrave;nh v&agrave; sử dụng n&oacute; để đưa ra dự đo&aacute;n.</p> <pre class="language-python"><code># example of loading a saved model from sklearn.datasets import make_classification from tensorflow.keras.models import load_model # create the dataset X, y = make_classification(n_samples=1000, n_features=4, n_classes=2, random_state=1) # load the model from file model = load_model('model.h5') # make a prediction row = [1.91518414, 1.14995454, -1.52847073, 0.79430654] yhat = model.predict([row]) print('Predicted: %.3f' % yhat[0])</code></pre> <p>Chạy v&iacute; dụ sẽ load h&igrave;nh ảnh từ tệp, sau đ&oacute; sử dụng n&oacute; để đưa ra dự đo&aacute;n tr&ecirc;n một h&agrave;ng dữ liệu mới v&agrave; in kết quả.</p> <pre class="language-python"><code>Predicted: 0.831</code></pre> <p><a href="https://tek4.vn/giam-tinh-trang-qua-khop-trong-huan-luyen-mo-hinh-keras-co-ban/" target="_blank" rel="noopener">B&agrave;i viết tiếp theo: L&agrave;m thế n&agrave;o để giảm t&igrave;nh trạng qu&aacute; khớp</a></p> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>