WEBVTT

00:00.240 --> 00:02.790
Hola y bienvenidos a este tutorial de Python.

00:02.790 --> 00:07.230
Está bien, tenemos una última función para implementar en nuestra clase de memoria de repetición.

00:07.230 --> 00:12.060
Esa es la función simple y eso es, por supuesto, obtener algunas muestras aleatorias de nuestra memoria.

00:12.210 --> 00:16.080
Y por lo tanto, esta función devolverá estas muestras aleatorias.

00:16.080 --> 00:17.850
Está bien, así que vamos a ello.

00:17.870 --> 00:20.630
Vamos a llamarlo simple.

00:20.640 --> 00:21.330
Aquí vamos.

00:21.420 --> 00:25.030
Y esta función toma dos argumentos como entrada.

00:25.260 --> 00:32.490
El primero como siempre es nuestro objeto futuro para reproducir la clase de memoria y el segundo argumento es si

00:32.490 --> 00:33.430
puedes intentar adivinar.

00:33.510 --> 00:40.290
Bueno, estamos tomando algunas muestras de tamaño fijo y, por lo tanto, tenemos que elegir un tamaño para las muestras y, más

00:40.290 --> 00:42.610
precisamente, lo llamamos un tamaño de lote.

00:42.820 --> 00:47.910
Así que ese es el nombre que le vamos a dar a nuestro segundo argumento de tamaño de lote.

00:48.180 --> 00:49.530
Y ahí vamos.

00:49.560 --> 00:54.490
Tenemos nuestros dos argumentos y ahora podemos implementar la función simple.

00:54.500 --> 01:00.780
Así que ahora solo quiero advertirles que esto será un poco técnico, pero haré todo lo posible por explicarlo.

01:01.250 --> 01:05.140
Así que vamos a comenzar creando la variable de ejemplos.

01:05.150 --> 01:09.620
Esta es solo la variable que contendrá las muestras de la memoria.

01:09.620 --> 01:11.340
Muy bien, tan simple es igual.

01:11.360 --> 01:14.090
Y ahora, ¿cómo vamos a obtener estas muestras?

01:14.450 --> 01:20.960
Bueno, antes que nada debemos tomar nuestra memoria porque estamos obteniendo las muestras de nuestra memoria.

01:20.960 --> 01:26.870
Entonces probablemente necesitemos el tamaño del lote porque las muestras van a contener el tamaño del lote

01:26.930 --> 01:27.720
de Elon.

01:27.830 --> 01:33.920
tamaño de lote y luego necesitamos algunos trucos de torche o bison para obtener un buen formato de estas muestras.

01:34.040 --> 01:35.600
Entonces necesitamos memoria, necesitamos un

01:35.600 --> 01:40.790
Entonces, ¿qué voy a hacer? Voy a escribir la línea de código y luego voy a explicar

01:40.790 --> 01:41.900
ese elemento por elemento.

01:41.990 --> 01:42.860
Hagamoslo.

01:42.860 --> 01:48.580
Estoy empezando por tomar una función zip. Voy a explicar muy pronto qué hace.

01:48.620 --> 01:51.980
Y dentro de esta función voy a agregar una estrella.

01:52.100 --> 01:53.800
Voy a expandir eso también.

01:53.900 --> 02:02.600
y la Central de pensamiento aleatorio tan aleatoria como habrás adivinado es la biblioteca aleatoria que importamos aquí.

02:02.600 --> 02:03.360
La Estrella

02:03.410 --> 02:08.900
Esa es la razón principal por la que tuvimos que importar estas bibliotecas aleatorias porque estamos tomando

02:08.900 --> 02:09.730
algunas muestras aleatorias.

02:10.040 --> 02:15.570
Entonces desde esta biblioteca aleatoria vamos a usar la función simple.

02:15.600 --> 02:20.060
Entonces estas son nuestras variables y esta es una función, así que voy a agregar algunos paréntesis.

02:20.210 --> 02:26.110
Y ahora, como puede ver, la muestra es una función y tenemos que poner algunos argumentos para que pueda

02:26.110 --> 02:27.850
ver el primer argumento en sí.

02:27.850 --> 02:34.660
esto corresponde a la memoria autodidacta, la memoria de nuestro objeto de instancia futuro de nuestra memoria de repetición para nosotros.

02:34.870 --> 02:36.970
Y en realidad hablando de uno mismo,

02:37.180 --> 02:44.290
Así que voy a agregar aquí ese recuerdo y luego el segundo argumento es como habrás adivinado el tamaño

02:44.530 --> 02:51.360
del Bechuana tomado aleatoriamente de nuestra memoria y que le dimos un nombre que es el tamaño del lote.

02:51.550 --> 02:55.690
Entonces, el segundo argumento va a ser Bachche apesta.

02:55.870 --> 02:56.410
Todo bien.

02:56.470 --> 03:01.080
Entonces, la línea de código se escribe y voy a explicar lo que hace.

03:01.510 --> 03:08.260
Entonces, en primer lugar, con esta función aleatoria de puntos simples, estamos tomando algunas muestras aleatorias de la memoria

03:08.800 --> 03:11.820
que tenía un tamaño fijo de ese tamaño.

03:12.550 --> 03:13.940
Entonces eso es comprensible.

03:14.150 --> 03:18.230
Pero entonces, ¿qué hace esta función de estrella Zipp?

03:18.530 --> 03:20.500
Bueno, no hay misterio al respecto.

03:20.540 --> 03:22.870
Es como la función de remodelación.

03:22.880 --> 03:28.460
Entonces, por ejemplo, voy a agregar un poco, ven aquí solo para explicar que voy a eliminarlo.

03:28.460 --> 03:34.680
Entonces, digamos que, por ejemplo, tenemos una lista de los siguientes elementos, por ejemplo.

03:34.820 --> 03:37.900
Primero uno dos tres.

03:38.180 --> 03:39.680
Y luego el segundo elemento.

03:39.680 --> 03:43.180
Cuatro cinco SEIS.

03:43.190 --> 03:48.020
Entonces tenemos una lista de dos dobles de tres elementos uno dos tres cuatro cinco seis.

03:48.380 --> 03:52.690
Bueno, entonces si aplico la función zip con la estrella.

03:52.880 --> 04:02.840
Bueno, ¿qué se convertiría en una lista de estrellas Zip tan va a ser igual a una nueva lista, pero de

04:03.380 --> 04:12.440
una forma diferente y una forma diferente va a ser uno para luego dos tres y luego cinco seis.

04:12.460 --> 04:12.770
Todo bien.

04:12.800 --> 04:13.950
Entonces eso es exactamente lo que hace.

04:13.970 --> 04:16.640
Simplemente da nueva forma a tu lista.

04:16.990 --> 04:21.610
OK, ahora que entiendes lo que hace esta lista de estrellas de Zipp.

04:21.680 --> 04:24.560
Bueno, ahora vamos a explicar por qué teníamos que hacerlo.

04:24.590 --> 04:30.360
Entonces, como usted entendió, vamos a agregar los eventos a la memoria y los eventos tienen la forma.

04:30.440 --> 04:34.530
Primero el estado, luego la acción y luego la recompensa.

04:34.820 --> 04:40.330
Pero para nuestro algoritmo no deseamos este formato, realmente queremos que nuestras muestras tengan el siguiente formato.

04:40.330 --> 04:47.540
Un formato se compone de tres muestras, una muestra para los estados, una muestra para las acciones y una muestra

04:47.540 --> 04:48.660
para la recompensa.

04:48.800 --> 04:53.690
Entonces, por ejemplo, digamos que este uno a tres es estado uno acción uno.

04:53.800 --> 05:01.100
Queremos uno y luego declarar a la acción dos y estábamos bien. Lo que queremos es un lote para cada lote para

05:01.100 --> 05:03.630
el estado uno y el estado dos.

05:03.680 --> 05:10.090
Uno es un partido para la acción uno en la acción dos y un tercero que para nosotros éramos uno y éramos dos.

05:10.190 --> 05:15.680
Ese es el formato que se espera a continuación, porque luego envolveremos estos lotes

05:15.770 --> 05:22.610
en un pastel hacia un impacto horrible que recordaremos es una variable que contiene un tensor y

05:22.610 --> 05:23.280
un degradado.

05:23.510 --> 05:29.750
Y eso para poder diferenciar con respecto a un tensor para poder diferenciar con respecto a

05:29.750 --> 05:35.480
intenser dentro de la estructura de un tensor que contiene horrible y un gradiente.

05:35.540 --> 05:37.820
De nuevo, así es como funciona la linterna Pi.

05:37.820 --> 05:44.480
Entonces, para resumir, creamos un lote para cada acción y recompensa del estado y luego vamos a

05:44.480 --> 05:50.600
colocar cada una de estas arvejas por separado en algunos bytes, que Horrible obtendrá un gradiente

05:50.840 --> 05:54.360
para que eventualmente podamos diferenciar cada uno de ellos.

05:54.620 --> 05:57.430
De acuerdo, ese es el propósito de la función Zipp.

05:57.480 --> 06:00.350
Así que déjame eliminar este comentario.

06:00.530 --> 06:05.980
Y ahora lo único que tenemos que hacer es devolver las muestras.

06:06.230 --> 06:12.650
las muestras directamente por la sencilla razón de que queremos poner las muestras en una torche viable.

06:12.830 --> 06:15.670
Entonces, como acabo de explicar, no podemos devolver

06:15.680 --> 06:22.580
Entonces, para hacer esto para cada una de las muestras vamos a usar la función de mapa y esta

06:22.580 --> 06:30.180
función de mapa hará la asignación de las muestras a las variables de tortura que contendrán un tensor y un gradiente.

06:30.200 --> 06:33.550
Entonces, como puede ver, esta función de mapa toma varios argumentos.

06:33.620 --> 06:38.600
El primer argumento es una función y esta función va a ser la función que convertirá

06:38.600 --> 06:40.590
las muestras en algunas variables de Torche.

06:40.760 --> 06:45.340
Y el segundo argumento es en lo que queremos aplicar esta función.

06:45.590 --> 06:50.580
Entonces esos serán los argumentos de esta función y, por lo tanto, qué va a ser.

06:50.600 --> 06:52.780
Por supuesto, serán las muestras.

06:52.790 --> 06:55.510
Entonces, el segundo argumento aquí serán los símbolos.

06:55.870 --> 06:59.440
Pero luego definamos la función en la que queremos aplicar.

06:59.480 --> 07:00.620
Cada uno de los símbolos.

07:01.040 --> 07:06.890
Entonces, para definir una función aquí necesitamos primero dar un nombre a la función que llamará lambda.

07:07.070 --> 07:14.330
Es solo un nombre y le da a Lenda, luego X, que será la variable de esta función.

07:14.420 --> 07:18.390
Entonces eso es solo un nombre y dar para la variable y luego.

07:18.500 --> 07:24.140
que es algo que convertirá nuestras muestras en una variable de antorcha y para hacer esto.

07:25.400 --> 07:32.010
Y aquí le damos la expresión de la función que es lo que queremos que devuelva esta función lambda y

07:32.250 --> 07:34.800
vemos qué va a ser y se supone

07:34.800 --> 07:37.370
Ya lo mencionamos en algunos tutoriales previos.

07:37.560 --> 07:39.880
Bueno, tenemos la función Voivode para ellos.

07:40.110 --> 07:46.680
La Voz funcionará y haremos la conversión de un bailarín de antorcha a una variable que contendrá el

07:46.690 --> 07:48.590
sensor y el más grande.

07:48.810 --> 07:55.830
Entonces, lo primero que voy a agregar aquí es una variable variable dentro de la cual voy a

07:56.010 --> 08:01.540
convertir X porque X será el más simple que se aplicará a las muestras.

08:02.420 --> 08:09.080
Pero eso es todo, hay una última cosa técnica que tenemos que implementar es el hecho de que

08:09.140 --> 08:15.680
para cada lote que está contenido en la muestra, por ejemplo, el lote de acciones a 1

08:15.680 --> 08:23.080
8 2 3 y las otras acciones tenemos que concatenarlo con respeto al primer motor que corresponde a los Estados.

08:23.120 --> 08:25.380
Y por qué tenemos que hacer esta concatenación.

08:25.550 --> 08:27.610
Es solo para que todo esté bien alineado.

08:27.710 --> 08:34.740
Eso es que en cada fila para indicar la acción y la recompensa corresponde al mismo tiempo t. De modo que eventualmente obtenemos una lista de lotes bien alineados y cada lote es un pastel hacia Voivod.

08:35.180 --> 08:42.240
Entonces, ¿cómo podemos hacer esta concatenación?

08:42.470 --> 08:44.700
Bueno, necesitamos usar la función cat de la biblioteca de antorchas.

08:44.840 --> 08:48.030
Así que vamos a agregar aquí la antorcha a la que

08:48.170 --> 08:55.400
agregamos que se aplica a X pero luego en esta función necesitamos especificar la dimensión con respecto a la cual queremos hacer esa concatenación.

08:55.400 --> 09:00.820
Y como acabo de mencionar, este es el primer motor que tiene índice de era.

09:00.860 --> 09:05.460
Y aquí vamos tenemos nuestra función preparada esta función Lunda que tomará

09:05.900 --> 09:12.320
las muestras para concatenarlas con respecto al primer motor de tiempo y luego eventualmente convertiremos los sensores

09:12.320 --> 09:18.110
en algunas variables de torche que contienen un tensor y un gradiente para que luego

09:18.110 --> 09:24.230
cuando aplicar para castigar en el sentido de que podremos diferenciar para tener pesos de datos.

09:24.230 --> 09:28.610
Está bien así que esta función está lista.

09:28.610 --> 09:30.170
Y luego aquí está el segundo argumento de la función de mapa.

09:30.410 --> 09:35.270
Necesitamos especificar en qué queremos aplicar esta función y eso está en todas nuestras muestras.

09:35.270 --> 09:42.960
Aquí vamos.

09:43.040 --> 09:43.850
Aplicaremos esta función

09:43.850 --> 09:50.750
lambda en todas las muestras para que eventualmente obtengamos una lista de coincidencias donde cada fósforo sea una antorcha PI viable.

09:50.990 --> 09:53.840
Está bien, así que fue bastante técnico, pero ahora al menos todo funcionará bien.

09:53.840 --> 09:58.810
Queremos usar esta técnica.

09:58.850 --> 10:00.060
una antorcha como quieras

10:00.080 --> 10:05.150
Luego solo lo usamos aquí, así que si no quieres entender profundamente los detalles técnicos aquí, está

10:05.150 --> 10:11.060
bien, puedes copiar estas tres líneas de código para simplificar tu memoria si quieres hacer una inteligencia artificial con

10:11.060 --> 10:14.460
Pero ahora la buena noticia es que hemos terminado con esta experiencia de

10:14.600 --> 10:21.110
clase de memoria de repetición. Ahora se implementa la reproducción y podemos pasar a la clase siguiente y final, que será el modo de seguridad completo.

10:21.470 --> 10:26.780
Entonces en este modelo tendremos, por supuesto, nuestra red

10:26.960 --> 10:34.520
que experimentará la repetición y luego todo el resto del algoritmo de seguridad.

10:34.640 --> 10:36.600
Entonces va a ser una clase mucho más grande.

10:36.620 --> 10:39.150
para que pueda comprender mejor lo que está sucediendo.

10:39.200 --> 10:44.240
Vamos a hacer unas 10 funciones, pero eso es solo porque lo estamos haciendo paso a paso

10:44.240 --> 10:46.130
Entonces no puedo esperar para implementar nuestro modelo de seguridad.

10:46.520 --> 10:49.260
Y hasta entonces yo

10:49.280 --> 10:50.900
&nbsp;
