WEBVTT

00:00.300 --> 00:02.280
Xin chào và chào mừng đến với hướng dẫn này.

00:02.310 --> 00:05.730
Được rồi, hôm nay chúng ta sẽ tạo một hàm để lưu mô hình của chúng ta.

00:05.760 --> 00:10.980
Điều đó sẽ lưu lại bộ não của chiếc xe để chúng ta có thể sử dụng lại nó bất cứ khi nào thoát ứng dụng.

00:11.190 --> 00:15.720
Nhờ chức năng lưu này, chúng tôi sẽ có thể lưu mô hình, sau đó thoát khỏi ứng dụng.

00:15.720 --> 00:20.340
Và sau đó khi chúng tôi quay lại ứng dụng, nhờ một chức năng khác, đó là chức năng tải sẽ

00:20.340 --> 00:25.550
thực hiện sau chức năng này, chúng tôi sẽ tải phiên bản cuối cùng của mô hình của chúng tôi đã được đào tạo.

00:25.560 --> 00:30.840
Vì vậy, điều đó sẽ rất thực tế và do đó chúng ta hãy biến hai hàm này thành hàm lưu

00:30.840 --> 00:31.710
và hàm tải.

00:32.040 --> 00:35.200
Vì vậy, hãy bắt đầu với chức năng lưu trong hướng dẫn này.

00:35.220 --> 00:38.250
Cho nên ở đây có chết mới cứu được.

00:38.490 --> 00:42.800
Và sau đó nó sẽ diễn ra một cuộc tranh cãi sẽ là của chính mình.

00:42.810 --> 00:50.010
Và lý do là thứ chúng ta sẽ lưu không phải là toàn bộ mô hình ở đây, mà là bản thân mạng nơ-ron của chúng ta, mô hình đó

00:50.040 --> 00:58.140
và trình tự tối ưu hóa của chúng ta bởi vì những gì chúng ta muốn lưu chỉ là trọng số cuối cùng mà chúng ta đã cập nhật ở lần lặp cuối

00:58.140 --> 01:04.050
cùng , bởi vì bất cứ khi nào chúng tôi muốn sử dụng lại mô hình đã lưu của mình sau này, chúng tôi

01:04.050 --> 01:08.790
muốn nó dự đoán hành động chơi với các mức tạ mà chúng tôi đã được đào tạo.

01:08.880 --> 01:13.140
Vì vậy, chúng tôi cần lấy phiên bản cuối cùng của trọng lượng và chúng tôi cũng cần lấy phiên bản cuối cùng

01:13.140 --> 01:16.020
của trình tối ưu hóa vì nó được kết nối với các trọng số này.

01:16.590 --> 01:17.790
Vì vậy, chúng ta hãy làm điều này.

01:17.790 --> 01:23.220
Chúng ta có cái tôi của mình, vì vậy chúng ta sẽ có thể lấy cái tôi của mình, mô hình đó và bản thân của chúng ta, trình tối ưu hóa đó.

01:23.340 --> 01:26.970
Và chúng tôi sẽ lưu hai đối tượng này và từ điển Python.

01:26.970 --> 01:32.180
Và để lưu hai đối tượng này, chúng ta sẽ sử dụng chức năng lưu từ mô-đun đèn pin.

01:32.190 --> 01:40.650
Vì vậy, tôi bắt đầu ở đây với ngọn đuốc lưu và trong ngoặc đơn, chúng tôi sẽ nhập dấu ngoặc từ điển đó và từ điển

01:40.650 --> 01:42.630
bằng Python hoạt động như vậy.

01:42.630 --> 01:45.480
Bạn có một khóa là mã định danh của bạn.

01:45.480 --> 01:46.530
Vì vậy, đó là duy nhất.

01:46.530 --> 01:49.650
Và đối với mỗi khóa, bạn có giá trị mà bạn muốn cung cấp cho khóa đó.

01:49.650 --> 01:56.730
Vì vậy, nó giống như một chức năng ánh xạ từ các số nhận dạng duy nhất đến một giá trị mà bạn muốn cung cấp cho các số nhận dạng này.

01:56.730 --> 02:03.300
Nếu bạn lấy một cuốn sách từ điển đơn giản, thì chìa khóa sẽ là từ và các giá trị sẽ là

02:03.300 --> 02:04.620
định nghĩa của từ.

02:04.620 --> 02:06.000
Chà, ở đây, cũng vậy.

02:06.000 --> 02:12.330
Chúng tôi sẽ tạo hai khóa, một khóa cho đối tượng đầu tiên chúng tôi muốn lưu, đó là mô hình tự.

02:12.330 --> 02:17.640
Và 1/2 chìa khóa cho điều thứ hai mà chúng tôi muốn lưu đó là trình tối ưu hóa tự chấm của chúng tôi.

02:17.640 --> 02:20.220
Và do đó, hãy bắt đầu với phím đầu tiên.

02:20.220 --> 02:26.310
Vì vậy, chúng ta phải đặt tên cho khóa đó và tôi sẽ gọi nó là state underscore dict vì sau đó bạn sẽ

02:26.310 --> 02:31.470
thấy rằng tôi sẽ sử dụng function state dict để lưu mô hình của chúng ta trong từ điển.

02:31.470 --> 02:37.980
Vì vậy, đó là khóa đầu tiên của chúng tôi sau đó để cung cấp giá trị mà chúng tôi muốn gán cho khóa đầu tiên đó.

02:37.980 --> 02:41.760
Như bạn có thể thấy, tôi đã thêm một chút lừa gạt ở đây và ở đây.

02:41.760 --> 02:44.700
Tôi sẽ thêm đối tượng, đối tượng mà tôi muốn lưu.

02:44.700 --> 02:48.330
Vì vậy, đối tượng đầu tiên tôi muốn lưu là mô hình bản thân.

02:48.450 --> 02:56.580
Vì vậy, chúng ta chỉ có thể sao chép mô hình tự này và dán nó làm giá trị của tự khóa đầu tiên của chúng tôi, mô hình đó.

02:56.610 --> 03:03.690
Sau đó, chúng tôi thêm ngày dấu gạch dưới trạng thái dấu chấm, ở đây chúng tôi bắt đầu, lần đầu tiên và sau đó chúng tôi thêm một số dấu ngoặc

03:03.990 --> 03:09.390
đơn và điều đó sẽ lưu các tham số của mô hình của bạn trong chính tả trạng thái khóa đầu tiên này.

03:09.720 --> 03:12.090
Và bây giờ hãy lưu trình tối ưu hóa của chúng tôi.

03:12.090 --> 03:15.240
Vì vậy, chúng tôi sẽ thêm một khóa thứ hai vào từ điển.

03:15.240 --> 03:20.970
Và để làm điều này, chúng tôi thêm vào đây một dấu phẩy, sau đó nhấn enter và ở đó chúng tôi thực hiện với phím thứ hai của mình.

03:20.970 --> 03:25.290
Vì vậy, khóa thứ hai, chúng ta sẽ gọi nó tốt, chúng ta có thể gọi nó là Trình tối ưu hóa.

03:26.060 --> 03:33.440
Sau đó, Colin và sau đó chúng ta chỉ cần thêm tên của đối tượng chúng ta muốn lưu và đó là chính nó, đó là trình tối ưu

03:33.440 --> 03:34.540
hóa của chúng ta.

03:34.550 --> 03:38.420
Vì vậy, chúng tôi thêm vào đây trình tối ưu hóa tự chấm.

03:38.990 --> 03:45.500
Và sau đó một lần nữa để lưu các tham số của trình tối ưu hóa này, chúng ta có ở đây một lần nữa chấm trạng thái dict và sau

03:45.500 --> 03:51.650
đó chúng ta đã lưu mô hình của mình với tất cả các trọng số được lưu và trình tối ưu hóa của chúng ta đã được lưu.

03:51.860 --> 03:52.790
Hoàn hảo.

03:52.940 --> 03:56.300
Và sau đó chúng tôi sẽ lưu tất cả những điều này vào một tệp.

03:56.300 --> 04:02.900
Và để làm điều này, tôi sẽ thêm đối số thứ hai vào hàm lưu, đây sẽ là tên của tệp này, nơi

04:02.900 --> 04:07.380
chúng tôi muốn lưu mô hình và trình tối ưu hóa của chúng tôi.

04:07.400 --> 04:12.860
Vì vậy, hãy nhớ rằng tôi đã cho bạn xem một bản demo nhanh trong phần đầu tiên của mô-đun đầu tiên này, xe tự lái.

04:12.900 --> 04:16.400
Bạn biết đấy, đó là bản demo mà chúng tôi chỉ có một số hành động ngẫu nhiên.

04:16.400 --> 04:18.520
Vì vậy, đó vẫn chưa phải là một chiếc xe tự lái.

04:18.530 --> 04:24.850
Nhưng sau đó hãy nhớ rằng tôi đã nhấp vào nút lưu để lưu mô hình và điều này đã tạo ra tệp PTA chấm

04:24.890 --> 04:29.250
não cuối cùng, đây là tệp chứa phiên bản đã lưu của mô hình của bạn.

04:29.270 --> 04:39.260
Vì vậy, tôi sẽ thêm vào đây PTA dấu chấm não cuối cùng để mô hình của bạn và trình tối ưu hóa của bạn sẽ được lưu

04:39.260 --> 04:42.260
vào tệp đã tạo này ít não hơn.

04:43.220 --> 04:44.660
Vì vậy, bạn chưa có nó được nêu ra.

04:44.660 --> 04:50.390
Nhưng ngay sau khi bạn lưu mô hình của mình trong ứng dụng, tệp này sẽ được tạo nhờ mã này mà chúng

04:50.390 --> 04:51.230
tôi vừa thêm.

04:51.500 --> 04:52.070
Được rồi.

04:52.070 --> 04:53.660
Và như vậy bây giờ hoàn hảo.

04:53.660 --> 04:59.150
Chúng tôi có chức năng lưu sẽ lưu mô hình của bạn, lưu bộ não của ô tô của bạn bằng cách lưu trọng

04:59.150 --> 05:01.400
lượng và trình tối ưu hóa mạng nơ ron.

05:01.400 --> 05:03.410
Trên thực tế, đó là bộ não của chiếc xe.

05:03.710 --> 05:04.600
Rất hoàn hảo.

05:04.610 --> 05:08.000
Bây giờ chúng ta chỉ có một chức năng duy nhất là tạo bên trái.

05:08.000 --> 05:09.620
Đó là chức năng tải.

05:09.620 --> 05:13.100
Và đó là bởi vì chức năng lưu không bao giờ đi mà không có chức năng tải.

05:13.100 --> 05:17.590
Bạn biết đấy, không có mục đích lưu mô hình của bạn nếu bạn không thể tải những gì bạn lưu sau đó.

05:17.600 --> 05:22.940
Vì vậy, đó là bước cuối cùng trong hành trình của chúng ta trước khi có bản demo thú vị và chúng ta sẽ tạo hàm tải

05:22.940 --> 05:24.920
này trong hướng dẫn cuối cùng của phần này.

05:24.920 --> 05:26.750
Vì vậy, tôi sẽ gặp bạn trong hướng dẫn tiếp theo này.

05:26.750 --> 05:28.520
Và cho đến khi đó, hãy tận hưởng tôi.
