WEBVTT

00:00.330 --> 00:02.640
Xin chào và chào mừng bạn đến với hướng dẫn Python này.

00:02.670 --> 00:05.400
Được rồi, vì vậy chúng tôi có những hướng dẫn rất thú vị trước mắt.

00:05.430 --> 00:08.830
Chúng ta sẽ bắt đầu bằng cách tạo ra kiến trúc của mạng nơ-ron.

00:08.850 --> 00:14.760
Đó là, chúng tôi sẽ tạo ra mạng nơ-ron trung tâm của AI của chúng tôi và điều đó sẽ trả lại hành động để

00:14.760 --> 00:16.230
chơi tại mỗi thời điểm.

00:16.230 --> 00:16.490
Nhìn thấy?

00:16.740 --> 00:17.970
Vì vậy, chúng ta hãy làm điều này.

00:17.970 --> 00:22.950
Vì vậy, vì chúng ta muốn mạng nơ-ron của mình là một đối tượng, chúng ta sẽ tạo một lớp.

00:22.950 --> 00:25.020
Và đó là bởi vì nó thuận tiện hơn nhiều.

00:25.170 --> 00:28.280
Biết một lớp là mô hình của thứ mà chúng ta muốn xây dựng.

00:28.290 --> 00:33.420
Chúng ta muốn xây dựng một mạng nơ-ron và chúng ta cần thực hiện một số loại hướng dẫn mà tất cả

00:33.420 --> 00:34.820
sẽ được chứa trong một lớp.

00:34.830 --> 00:37.740
Và trong lớp này, chúng ta sẽ tạo ra hai hàm.

00:37.740 --> 00:43.050
Đầu tiên, hàm init, là hàm xuất hiện mọi lúc khi tạo một lớp và về

00:43.050 --> 00:46.500
cơ bản nó xác định biến đối tượng của bạn.

00:46.500 --> 00:51.600
Đó là mạng nơ-ron, bạn biết đấy, các biến được gắn với đối tượng trái ngược với các biến

00:51.600 --> 00:52.410
toàn cục.

00:52.590 --> 00:57.840
Và đây là trong hàm init này sẽ xác định kiến trúc của mạng nơ-ron, xác định lớp đầu vào

00:57.840 --> 01:03.630
sẽ bao gồm năm tế bào thần kinh đầu vào vì chúng ta có năm chiều cho vector được mã hóa của

01:03.630 --> 01:07.920
trạng thái đầu vào, sau đó chúng ta sẽ xác định một số lớp ẩn .

01:07.920 --> 01:12.870
Có thể chúng ta sẽ bắt đầu với một lớp ẩn và sau đó bạn sẽ được hoan nghênh thử một số kiến

01:12.870 --> 01:13.950
trúc khác của mạng nơ-ron.

01:13.950 --> 01:20.040
Và sau đó, tất nhiên chúng ta sẽ kết thúc với lớp đầu ra sẽ chứa các hành động khả thi mà chúng ta có

01:20.040 --> 01:21.780
thể chơi tại mỗi thời điểm.

01:21.990 --> 01:24.570
Vì vậy, đó chính xác là những gì chúng ta sẽ làm trong hàm init này.

01:24.570 --> 01:30.390
Và sau đó chúng ta sẽ tạo một hàm khác vẫn còn bên trong lớp, đó sẽ là hàm chuyển

01:30.390 --> 01:35.460
tiếp và đó sẽ là hàm sẽ kích hoạt các nơ-ron trong mạng nơ-ron, bạn biết đấy,

01:35.460 --> 01:37.290
sẽ kích hoạt các tín hiệu.

01:37.290 --> 01:43.320
Và vì vậy, chúng tôi sẽ sử dụng một chức năng kích hoạt bộ chỉnh lưu vì tất nhiên chúng tôi đang giải quyết một vấn đề

01:43.320 --> 01:46.710
hoàn toàn phi tuyến và chức năng chỉnh lưu này phá vỡ tuyến tính.

01:46.950 --> 01:52.410
Nhưng chủ yếu là chúng tôi thực hiện hàm chuyển tiếp này để trả về các giá trị Q, là đầu ra

01:52.410 --> 01:53.280
của mạng nơ-ron.

01:53.280 --> 01:59.670
Nhưng chúng ta có một giá trị cue cho mỗi hành động và sau này chúng ta sẽ trả lại hành động cuối cùng bằng cách lấy

01:59.670 --> 02:03.810
giá trị tối đa của các giá trị cue hoặc sử dụng phương thức soft max.

02:03.810 --> 02:05.190
Chúng ta sẽ thấy điều đó sau đây.

02:05.190 --> 02:10.260
Vì vậy, trong hướng dẫn này, chúng ta sẽ bắt đầu bằng cách triển khai hàm init và trong phần tiếp theo,

02:10.260 --> 02:12.360
chúng ta sẽ triển khai hàm chuyển tiếp.

02:12.600 --> 02:13.710
Vì vậy, chúng ta hãy làm điều này.

02:13.710 --> 02:16.980
Đầu tiên, chúng ta cần giới thiệu lớp học của mình.

02:16.980 --> 02:18.180
Vì vậy, chúng tôi bắt đầu với lớp học.

02:18.180 --> 02:22.800
Sau đó, chúng tôi đặt tên cho lớp của chúng tôi mà chúng tôi có thể gọi nó là mạng.

02:23.400 --> 02:30.060
Và sau đó trong lớp mạng này, tôi sẽ sử dụng một kỹ thuật lập trình đối tượng được gọi là kế

02:30.060 --> 02:34.980
thừa, và đó chỉ là kế thừa từ tất cả các công cụ của lớp cha.

02:34.980 --> 02:42.990
Vì vậy, lớp mạng của chúng ta mà chúng ta sắp tạo là một lớp con của một lớp lớn hơn, đó là một mô-đun

02:42.990 --> 02:43.950
RN DOT.

02:44.250 --> 02:50.250
Vì vậy, đó chỉ là kế thừa từ tất cả các công cụ của lớp mô-đun này, tất nhiên là các công cụ

02:50.250 --> 02:51.660
để triển khai mạng nơ-ron.

02:51.660 --> 02:57.720
Vì vậy, đó là một thủ thuật rất mạnh mẽ và hiệu quả trong lập trình hướng đối tượng được gọi là kế thừa.

02:57.720 --> 03:02.310
Và ngay bây giờ chúng ta đang kế thừa từ lớp cha mô-đun này.

03:02.610 --> 03:03.360
Được rồi.

03:03.360 --> 03:05.910
Và bây giờ chúng ta đã sẵn sàng vào bên trong lớp học.

03:05.910 --> 03:12.270
Vì vậy, tôi thực sự nhấn enter hai lần, bởi vì chúng tôi sẽ tạo hai hàm và chúng tôi đang

03:12.300 --> 03:14.040
bắt đầu với hàm init.

03:14.040 --> 03:20.370
Vì vậy, hàm init, chúng ta phải đặt tên nó theo cách này với hai dấu gạch dưới sau đó trong nó.

03:20.370 --> 03:26.520
Và sau đó, một lần nữa để gạch dưới đó chỉ là cú pháp Python, đó chỉ là cách chúng ta phải thực hiện và sau

03:26.520 --> 03:28.440
đó chúng ta cần nhập các đối số.

03:28.440 --> 03:30.180
Vì vậy, chúng tôi có ba đối số.

03:30.180 --> 03:35.700
Cái đầu tiên là một lý lẽ bắt buộc thực sự là cái tôi và cái tôi.

03:35.700 --> 03:42.180
Không có gì bí ẩn về nó đề cập đến đối tượng sẽ được tạo ra từ lớp này mà chúng ta sắp

03:42.180 --> 03:42.750
tạo.

03:42.750 --> 03:44.280
Bạn biết đấy, chúng tôi đang tạo ra lớp học này.

03:44.280 --> 03:48.900
Nó giống như một số chỉ dẫn, một mô hình nào đó của mạng nơ-ron mà chúng tôi muốn xây dựng.

03:48.900 --> 03:53.400
Và sau đó khi lớp đã sẵn sàng, chúng ta có thể tạo bao nhiêu mạng nơ-ron tùy thích.

03:53.400 --> 03:57.450
Và mỗi mạng nơ-ron này sẽ là một số đối tượng của lớp này.

03:57.600 --> 04:04.830
Và vì chúng ta sẽ sử dụng đối tượng cho một số mục đích khác, chúng ta cần xác định các biến của đối tượng

04:04.830 --> 04:05.670
là gì.

04:05.670 --> 04:11.820
Và để phát hiện ra điều này, chúng tôi đang sử dụng bản thân này ở đây để chỉ định rằng chúng tôi đang đề cập đến đối tượng.

04:11.820 --> 04:18.210
Vì vậy, bất cứ khi nào tôi muốn sử dụng một biến từ đối tượng của mình, tôi sẽ sử dụng self trước biến để chỉ định

04:18.210 --> 04:20.400
rằng đây là một biến của đối tượng.

04:21.180 --> 04:21.480
Được rồi.

04:21.480 --> 04:22.770
Vì vậy, đó là lập luận đầu tiên.

04:22.770 --> 04:28.500
Và sau đó chúng ta có hai đối số khác, tất nhiên là số lượng tế bào thần kinh đầu vào và số lượng

04:28.500 --> 04:30.120
tế bào thần kinh đầu ra.

04:30.300 --> 04:34.170
Vì vậy, số lượng tế bào thần kinh đầu vào, chúng ta sẽ gọi nó là kích thước đầu vào.

04:35.430 --> 04:42.870
Và đó thực sự là năm vì vectơ đầu vào của chúng tôi có năm chiều, ba tín hiệu cộng với định hướng cộng

04:42.870 --> 04:44.730
với định hướng trừ đi.

04:44.880 --> 04:50.970
Đó là vectơ của chúng tôi về các giá trị được mã hóa mô tả một trạng thái của môi trường.

04:51.000 --> 04:54.750
Năm giá trị này đủ để mô tả trạng thái của môi trường.

04:54.750 --> 04:59.400
Chúng tôi có thể nghĩ về ít giá trị hơn hoặc nhiều giá trị hơn, nhưng đó là những gì tôi đã thử.

04:59.400 --> 05:04.410
Và nó thực sự có ý nghĩa vì chúng ta thực sự cần một tín hiệu từ bên trái, một tín hiệu trước mặt và một tín

05:04.410 --> 05:05.300
hiệu ở bên phải.

05:05.310 --> 05:10.560
Bạn biết đấy, khi chúng tôi đang lái xe ô tô, chúng tôi có thể đã đi theo tín hiệu 360, bạn biết đấy, giống như tín

05:10.560 --> 05:12.090
hiệu ở đầu ô tô của Google.

05:12.090 --> 05:15.510
Nhưng chúng ta hoàn toàn có thể tự lái với ba cảm biến.

05:15.780 --> 05:20.970
Và sau đó, chúng tôi có định hướng này và định hướng trừ, bạn biết đấy, hãy theo dõi mục tiêu mà chúng tôi đang

05:20.970 --> 05:22.050
cố gắng đạt được.

05:22.290 --> 05:28.680
Và dĩ nhiên, chúng ta có các nơ-ron đầu ra của mạng nơ-ron tương ứng với các hành động.

05:28.680 --> 05:32.700
Và chúng ta có ba hành động khả thi là đi sang trái, đi thẳng hoặc đi sang phải.

05:32.700 --> 05:36.240
Và do đó tôi sẽ gọi nó là hành động.

05:36.240 --> 05:37.800
Và sẽ có ba người trong số họ.

05:38.370 --> 05:38.670
Được rồi.

05:38.670 --> 05:44.790
Nhưng cho đến nay, chúng ta chỉ phải đặt tên cho các đầu vào và sau đó chúng ta sẽ sử dụng các biến này để thực hiện các

05:44.790 --> 05:46.110
phép tính bên trong mạng nơ-ron.

05:46.930 --> 05:48.400
Được rồi.

05:49.000 --> 05:52.150
Tôi sẽ bắt đầu bằng cách sử dụng một thủ thuật PyTorch khác.

05:52.180 --> 05:54.340
Thủ thuật này là siêu chức năng.

05:54.460 --> 05:59.170
Đó là một chức năng thực sự kế thừa từ mô-đun RN.

05:59.170 --> 06:02.560
Vì vậy, đó là lý do tại sao chúng tôi phải sử dụng kế thừa để kế thừa công cụ mô-đun.

06:02.560 --> 06:04.300
Đây là công cụ đầu tiên chúng tôi sử dụng.

06:04.300 --> 06:10.450
Và về cơ bản, chúng tôi chỉ sử dụng siêu thủ thuật này, siêu chức năng này để có thể sử dụng các công

06:10.450 --> 06:11.320
cụ của mô-đun.

06:11.380 --> 06:13.060
Vì vậy, điều đó hiệu quả hơn nhiều.

06:13.450 --> 06:18.280
Và bên trong siêu chức năng này, tôi chỉ cần xác định mạng đầu tiên.

06:18.400 --> 06:24.460
Vì vậy, đó là lớp con mạng của chúng tôi, bạn biết đấy, bởi vì nó được kế thừa

06:24.460 --> 06:34.630
từ lớp cha mô-đun và sau đó là đối tượng của chúng tôi và sau đó tôi chỉ thêm dấu chấm và hoặc hàm init giống như cách chúng tôi đặt tên cho

06:34.630 --> 06:35.020
nó.

06:35.380 --> 06:35.740
Được rồi.

06:35.740 --> 06:41.740
Vì vậy, đó chỉ là một mẹo sử dụng tất cả các công cụ của và trong mô-đun đó, sau đó chúng

06:41.740 --> 06:46.150
ta có thể chuyển sang bước tiếp theo, đó là chỉ định lớp đầu vào.

06:46.300 --> 06:53.230
Vì vậy, về cơ bản những gì tôi phải làm là giới thiệu một biến mới sẽ được gắn vào đối

06:53.230 --> 06:56.950
tượng và biến này sẽ chứa số lượng nơ-ron đầu vào.

06:56.950 --> 07:00.160
Vì vậy, không bị nhầm lẫn với kích thước đầu vào.

07:00.160 --> 07:07.090
Kích thước đầu vào là đối số của hàm init, nhưng đó không phải là biến được gắn với đối

07:07.090 --> 07:10.270
tượng mà là biến được gắn với đối tượng.

07:10.270 --> 07:15.190
Như tôi vừa đề cập, chúng ta cần chỉ rõ rằng thay vào đó nó được gắn vào đối tượng.

07:15.190 --> 07:22.000
Vì vậy, chúng tôi sử dụng một dấu chấm tự và bây giờ chúng tôi đặt tên cho biến đầu tiên này được gắn với đối tượng.

07:22.000 --> 07:24.730
Và vì vậy chúng ta có thể chỉ cần đặt tên giống như đầu vào.

07:24.730 --> 07:31.900
Chúng ta có thể gọi nó là kích thước đầu vào, và chúng ta sẽ nói rằng nó bằng với đối số của hàm init là kích

07:31.900 --> 07:32.980
thước đầu vào.

07:33.520 --> 07:33.880
Được rồi.

07:33.880 --> 07:39.430
Vì vậy, mỗi khi tôi tạo một đối tượng từ lớp mạng và tôi đang chỉ định kích thước đầu vào, chẳng

07:39.430 --> 07:45.190
hạn như tôi đang nhập năm, sẽ có năm ở đây và do đó biến kích thước đầu vào của đối tượng của

07:45.190 --> 07:51.250
chúng tôi sẽ có giá trị là năm vì kích thước đầu vào này ở đây sẽ là năm và do đó mạng nơ-ron

07:51.250 --> 07:54.850
của chúng ta sẽ có năm nơ-ron đầu vào trong lớp đầu vào.

07:55.300 --> 07:55.690
Được rồi.

07:55.690 --> 08:01.990
Và điều đó cũng tương tự đối với biến khác mà chúng ta muốn gắn vào đối tượng của mình.

08:01.990 --> 08:07.930
Và như bạn có thể đoán, đây sẽ là một biến cho số lượng tế bào thần kinh đầu ra.

08:08.080 --> 08:15.040
Và để nói rằng chúng ta tự lấy đối tượng của mình và sau đó chúng ta đặt tên cho biến thứ hai này của đối tượng

08:15.040 --> 08:17.620
mà chúng ta sẽ gọi nó là hành động.

08:17.950 --> 08:23.200
Và điều này sẽ bằng với đối số này ở đây, đưa ra số lượng hành động, đó là số lượng tế bào

08:23.200 --> 08:24.220
thần kinh đầu ra.

08:24.220 --> 08:28.060
Và vì vậy chúng tôi đặt nó bằng và là hành động.

08:28.150 --> 08:30.640
Vì vậy, thực tế và hành động sẽ bằng ba.

08:30.640 --> 08:37.480
Do đó, biến và hành động được gắn với đối tượng của chúng ta vào một mạng sẽ nhận giá trị là ba.

08:38.080 --> 08:39.670
Trên thực tế, chúng ta có thể thấy một cảnh báo ở đây.

08:39.670 --> 08:47.470
Nó nói tên không xác định và đó là vì ở đây chúng ta sử dụng phím tắt RN và chúng ta cần sử dụng phím tắt ở đây

08:47.470 --> 08:52.690
và sau đó cho phần cuối của chúng ta trong mô-đun và sau đó nó sẽ biến mất.

08:52.690 --> 08:53.470
Chúng ta bắt đầu.

08:53.500 --> 08:54.340
Hoàn hảo.

08:54.340 --> 08:55.840
Ngay bây giờ chúng tôi không có cảnh báo.

08:55.840 --> 09:01.420
Tất cả các cảnh báo ở đây chỉ để xác định rằng những gì chúng tôi nhập chưa được sử dụng.

09:01.420 --> 09:02.020
Nhưng nó ổn.

09:02.020 --> 09:03.940
Chúng tôi sẽ sử dụng chúng sau đó.

09:04.510 --> 09:07.870
Được rồi, chúng ta có hai biến khác.

09:07.870 --> 09:09.880
Chúng tôi muốn xác định bốn đối tượng.

09:09.880 --> 09:15.790
Và đây sẽ là các kết nối đầy đủ, các kết nối đầy đủ giữa các lớp khác nhau của mạng nơ-ron của

09:15.790 --> 09:16.510
chúng ta.

09:16.510 --> 09:21.580
Vì vậy, vì ngay bây giờ chúng tôi muốn tạo một mạng nơ-ron chỉ bao gồm một lớp ẩn, tốt,

09:21.580 --> 09:23.380
sẽ có hai kết nối đầy đủ.

09:23.380 --> 09:29.380
Sẽ có 1/1 kết nối đầy đủ giữa lớp đầu vào và lớp ẩn và 1/2 kết nối đầy

09:29.380 --> 09:32.200
đủ giữa lớp ẩn và lớp đầu ra.

09:32.200 --> 09:34.630
Vì vậy, hãy bắt đầu với kết nối đầy đủ đầu tiên.

09:34.630 --> 09:37.900
Chúng tôi sẽ gọi nó là FC.

09:37.900 --> 09:43.420
Và một lần nữa, tôi sử dụng self ở đây để chỉ định rằng FC một là biến đối tượng của tôi.

09:43.570 --> 09:45.190
Vì vậy, tự FC đó một.

09:45.800 --> 09:47.440
Mà sẽ bằng.

09:47.450 --> 09:53.870
Và bây giờ chúng ta sử dụng mô-đun RN và chúng ta sẽ sử dụng một hàm được gọi là tuyến tính.

09:54.020 --> 10:00.530
Và đó chính xác là tạo ra kết nối đầy đủ này giữa các nơ-ron của lớp đầu vào với các nơ-ron

10:00.530 --> 10:01.580
của lớp ẩn.

10:01.940 --> 10:03.910
Và tôi có nghĩa là gì bởi kết nối đầy đủ?

10:03.920 --> 10:09.230
Điều đó có nghĩa là tất cả các nơ-ron của lớp đầu vào sẽ được kết nối với tất cả các nơ-ron của

10:09.230 --> 10:09.770
lớp ẩn.

10:09.980 --> 10:16.010
Và do đó, để tạo kết nối đầy đủ này, chúng ta sử dụng hàm tuyến tính này mà chúng ta cần nhập một số đối số.

10:16.010 --> 10:19.670
Và như bạn có thể thấy, những đối số này nằm trong các tính năng.

10:19.670 --> 10:23.800
Vì vậy, đó là số lượng tế bào thần kinh của lớp đầu tiên chúng ta muốn kết nối.

10:23.810 --> 10:28.400
Sau đó, các tính năng bên ngoài, đó là số lượng tế bào thần kinh của lớp thứ hai mà chúng ta muốn kết nối.

10:28.400 --> 10:32.240
Đó là lớp ở bên phải, đó là lớp ẩn và bias bằng true.

10:32.270 --> 10:33.470
Vì vậy, thành kiến bằng đúng.

10:33.500 --> 10:39.440
Chúng tôi sẽ giữ giá trị mặc định để có độ lệch và không chỉ một số cách để gắn vào các nơ-ron,

10:39.440 --> 10:43.130
chúng tôi sẽ có trọng số và một độ lệch cho mỗi lớp.

10:43.370 --> 10:46.040
Và vì vậy, chúng ta hãy xem những gì chúng ta cần nhập.

10:46.040 --> 10:51.770
Vì vậy, đối số đầu tiên trong các tính năng là số lượng tế bào thần kinh đầu vào trong lớp đầu vào.

10:51.770 --> 10:52.820
Và vậy nó là gì?

10:52.820 --> 10:54.860
Đó thực sự là kích thước đầu vào.

10:54.860 --> 11:02.000
Đó là đối số của hàm init, sau này sẽ bằng năm định hướng ba tín hiệu và

11:02.000 --> 11:03.440
định hướng trừ.

11:03.950 --> 11:04.880
Vì vậy, chúng ta bắt đầu.

11:04.910 --> 11:08.780
Chúng tôi nhập kích thước đầu vào đối số đầu tiên.

11:09.700 --> 11:12.730
Và sau đó đối số thứ hai là về các tính năng.

11:12.730 --> 11:18.100
Đó là số lượng tế bào thần kinh mà chúng ta muốn có trong lớp thứ hai, lớp thứ hai sẽ được

11:18.100 --> 11:20.120
kết nối hoàn toàn với lớp đầu tiên.

11:20.140 --> 11:24.820
Và bây giờ câu hỏi đặt ra là chúng ta muốn có bao nhiêu tế bào thần kinh trong lớp ẩn này?

11:25.000 --> 11:27.340
Chà, tôi đã điều chỉnh rất nhiều tham số.

11:27.340 --> 11:28.930
Tôi đã thử nghiệm rất nhiều.

11:28.930 --> 11:31.870
Đó là những gì chúng tôi làm trong AI hoặc đó là những gì chúng tôi làm trong học sâu.

11:31.870 --> 11:38.200
Nói chung, chúng tôi thực hiện rất nhiều thử nghiệm để xem đâu sẽ là mạng nơ-ron tốt nhất cho vấn đề cụ thể của

11:38.200 --> 11:38.890
chúng tôi.

11:38.890 --> 11:44.980
Và vì vậy tôi đã thử nhiều giá trị và cuối cùng tôi chọn 30, 30 nơ-ron trong một lớp ẩn.

11:44.980 --> 11:48.160
Và bạn sẽ thấy rằng với con số này, chúng ta sẽ thu được một số kết quả khá khả quan.

11:48.160 --> 11:51.520
Nhưng sau đó, hãy thoải mái thay đổi kiến trúc của mạng nơ-ron.

11:51.520 --> 11:52.870
Hãy thoải mái chơi với nó.

11:52.870 --> 11:57.460
Bạn không chỉ có thể thay đổi số lượng tế bào thần kinh ẩn trong lớp ẩn mà còn có thể thêm

11:57.460 --> 12:01.090
một số lớp nữa để có thể có được một chiếc xe thậm chí còn tốt hơn.

12:01.090 --> 12:05.740
Nhưng 3000 tế bào thần kinh sẽ giúp chúng ta có được một mạng lưới thần kinh tốt và một chiếc xe tốt.

12:05.740 --> 12:07.270
Vì vậy, đó là những gì chúng tôi đi cho.

12:07.270 --> 12:08.320
Và chúng ta bắt đầu.

12:08.320 --> 12:13.240
Chúng tôi có kết nối đầy đủ đầu tiên của chúng tôi thực sự với hàm tuyến tính này.

12:13.240 --> 12:16.840
Chúng tôi tạo kết nối đầy đủ giữa lớp đầu vào và lớp ẩn.

12:17.080 --> 12:21.040
Và bây giờ là lúc để thực hiện kết nối đầy đủ thứ hai.

12:21.040 --> 12:25.030
Đó là kết nối đầy đủ giữa lớp ẩn và lớp đầu ra.

12:25.270 --> 12:26.260
Vậy là xong.

12:26.470 --> 12:30.100
Chúng tôi sẽ gọi đây là kết nối đầy đủ thứ hai.

12:30.100 --> 12:32.140
FC hai Chúng ta đi.

12:32.140 --> 12:34.900
Và đây vẫn là một biến từ đối tượng của chúng ta.

12:34.900 --> 12:41.140
Vì vậy, tôi đang sử dụng công cụ

12:41.140 --> 12:47.920
ở đây và sau đó chúng tôi sử dụng

12:48.190 --> 12:49.060
tốt.

12:49.060 --> 12:49.810
Cũng vậy thôi.

12:49.810 --> 12:55.000
Đầu tiên là số lượng tế bào thần kinh mà chúng ta muốn có trong lớp đầu tiên của kết nối thức ăn.

12:55.000 --> 12:58.960
Vì vậy, đó là lớp ẩn và do đó đó là 30.

12:59.380 --> 13:05.080
Và đối số thứ hai là số lượng tế bào thần kinh trong lớp thứ hai của kết nối thức ăn và

13:05.080 --> 13:06.910
tương ứng với lớp đầu ra.

13:06.910 --> 13:13.120
Và lớp đầu ra có và là các nơ-ron hành động, sau này sẽ là ba vì chúng ta có ba hành động

13:13.120 --> 13:13.840
khả thi.

13:13.840 --> 13:19.420
Nhưng cho đến nay chúng ta phải sử dụng các tên mà chúng ta đã xác định, đó là tên của đối số của

13:19.570 --> 13:23.200
hàm init và do đó chúng ta nhập vào đây và là hành động.

13:23.590 --> 13:24.700
Và chúng ta bắt đầu.

13:24.700 --> 13:30.910
Trước hết, hai kết nối đầy đủ của chúng tôi đã sẵn sàng và thứ hai, hàm init của chúng tôi đã sẵn sàng.

13:31.120 --> 13:36.850
Vì vậy, đó là những gì chúng ta sẽ khởi tạo đối tượng của mình bất cứ khi nào chúng ta tạo một đối tượng từ lớp mạng.

13:36.850 --> 13:43.180
Và vì vậy ngay sau khi chúng ta tạo một đối tượng, tất cả các biến này, bốn biến ở đây kích thước đầu

13:43.180 --> 13:46.930
vào và là hành động FC một và FC hai sẽ được xác định.

13:46.930 --> 13:50.200
Và đó là cách chúng ta sẽ có được kiến trúc của mạng nơ-ron của chúng ta.

13:50.200 --> 13:56.350
Đối với mỗi đối tượng mà chúng ta tạo ra, mỗi đối tượng sẽ tương ứng với một mạng lưới thần kinh

13:56.350 --> 14:00.040
gồm 5 nơ-ron đầu vào, 30 nơ-ron ẩn và 3 nơ-ron đầu ra.

14:00.220 --> 14:01.210
Vậy là xong.

14:01.240 --> 14:06.520
Chúng ta đã thực hiện xong với hàm init đầu tiên này và bây giờ chúng ta có thể chuyển sang hàm

14:06.520 --> 14:12.460
thứ hai, là hàm chuyển tiếp và sẽ được sử dụng để kích hoạt các nơron trong mạng nơron bằng cách sử dụng chức năng

14:12.460 --> 14:18.580
kích hoạt bộ chỉnh lưu, và chủ yếu là cuối cùng trả về Q các giá trị là kết quả đầu ra của mạng nơ-ron của

14:18.580 --> 14:19.210
chúng ta.

14:19.300 --> 14:21.640
Vì vậy, tôi không thể chờ đợi để làm điều này trong hướng dẫn tiếp theo.

14:21.640 --> 14:22.960
Và cho đến khi đó, hãy tận hưởng.

14:22.960 --> 14:23.530
TÔI.
