WEBVTT

00:00.300 --> 00:02.610
大家好, 欢迎学习本教程｡ 

00:02.640 --> 00:12.510
现在我们要用第二个函数来初始化权重, 这个函数将被用来得到这些权重的最优学习｡

00:12.990 --> 00:17.130
第二个函数, 我们称之为权重｡ 

00:17.990 --> 00:19.490
还有里面的乐谱｡ 

00:19.730 --> 00:25.920
它将把对象端作为自变量, 它将代表神经网络｡ 

00:25.940 --> 00:26.930
就这样了

00:26.930 --> 00:28.370
然后是结肠｡ 

00:28.370 --> 00:32.210
现在让我们进入函数内部来定义我们想要做什么｡ 

00:32.300 --> 00:39.830
所以基本上我们要做的是初始化神经网络的权重, 以这样的方式, 我们得到最优的学习｡

00:39.830 --> 00:43.460
所以这看起来不是特别直观｡ 

00:43.460 --> 00:46.520
这是基于研究论文和实验｡ 

00:46.520 --> 00:54.560
我们将以一种我们从未见过的特定方式初始化权重, 但相信我, 这将优化学习过程｡

00:54.650 --> 01:00.680
所以我们将直接实现它, 而不详细说明为什么要以这种方式初始化权重｡

01:00.680 --> 01:09.440
所以我们要用一个技巧来开始, 这个技巧稍后会被用来区分卷积和全连接｡

01:09.440 --> 01:14.390
因为, 你们知道, 记住,

01:14.390 --> 01:20.480
我们的眼睛会有眼睛, 因此它会有一些卷积层, 当然它也会有一些全连接层, 我们会有一个不同的初始化权值,

01:20.480 --> 01:23.450
对于这两种类型的连接｡

01:23.540 --> 01:33.650
所以我们要用这个技巧来区分这两种连接, 然后我们要用一些if条件来为每种连接得到不同的初始化｡

01:33.950 --> 01:40.310
这个技巧是创建一个新变量, 我们称之为class name,

01:40.310 --> 01:42.620
它等于我们的对象M｡

01:42.620 --> 01:45.740
所以M代表神经网络, 但它是一个对象｡ 

01:45.740 --> 01:52.190
我们稍后会看到, 我们将从这个对象中得到特殊属性, 它是带双下划线的类名,

01:52.190 --> 02:00.260
第一个类, 双下划线点, 双下划线再一次名字, 差不多在那里,

02:00.260 --> 02:02.960
乐谱中还有一个双引号.

02:03.080 --> 02:09.500
所以这是一个相当丑陋的技巧来寻找我们新的网络对象的连接类型｡ 

02:09.500 --> 02:11.960
但那会给予我们想要的｡ 

02:11.990 --> 02:15.260
当我们开始if条件的时候, 你会发现它是有意义的｡ 

02:15.260 --> 02:19.430
顺便说一句, 说到条件, 我们现在就可以开始｡ 

02:19.430 --> 02:26.060
我们现在要做的就是启动第一个if条件, 这将得到第一个case｡ 

02:26.060 --> 02:29.150
如果连接是卷积的话｡ 

02:29.330 --> 02:33.380
所以要写这个条件, 我们写if类名｡ 

02:34.370 --> 02:35.440
不过还好｡ 

02:35.450 --> 02:45.560
这里我们用了一个方法, fine方法find, 在里面我们用引号把conf输入进去,

02:45.560 --> 02:52.820
进行卷积, 所以如果类名dotfindconf是我们要做的不是减1｡

02:52.820 --> 02:57.680
如果我们有一个卷积, 因为-1表示没有｡ 

02:58.010 --> 03:02.870
在这种情况下, 我们将对权重进行特殊的初始化｡ 

03:03.200 --> 03:07.220
所以这个条件意味着如果我们有一个卷积连接｡ 

03:07.550 --> 03:13.790
在这种情况下, 我们要做的是运行我们想要的权重的特定初始化｡ 

03:13.790 --> 03:17.790
所以所有非直觉的东西都会出现｡ 

03:17.810 --> 03:23.390
我们首先创建一个变量, 我们称之为重量和护卫形状｡ 

03:23.940 --> 03:31.020
所以这个形状的权重是一个列表, 它基本上包含了神经网络中的权重｡

03:31.020 --> 03:35.430
所以我们要用list函数来创建一个列表.

03:36.000 --> 03:43.410
在里面我们输入m, 神经网络的点权重, 它就是神经网络的权重｡

03:43.410 --> 03:45.990
但是在回旋连接中｡ 

03:46.290 --> 03:55.590
为了得到这些权重的形状, 我们使用了另一个属性, 即点数据, 然后, size, size,

03:55.590 --> 03:59.100
将得到这些权重在卷积连接中的形状｡

03:59.490 --> 04:07.560
所以现在权值形状包含在一个列表中, 权值的形状, 以及神经网络和的卷积连接｡

04:08.330 --> 04:08.660
好吧, 我会的

04:08.660 --> 04:16.430
所以我们有了很好的形状, 然后初始化这个卷积连接的权重, 我们需要两个值｡

04:16.430 --> 04:22.790
第一个是第一维乘以第二维, 再乘以第三维的乘积｡ 

04:22.790 --> 04:24.410
这就是我们现在要做的｡ 

04:24.620 --> 04:30.290
然后我们还需要得到零维乘以第二维, 乘以第三维,

04:30.290 --> 04:35.390
然后我们将使用这两个值来计算我们如何初始化权重｡

04:35.390 --> 04:37.850
让我们来看看第一个产品｡ 

04:37.850 --> 04:44.030
我们称之为扇入, 它等于乘积｡ 

04:44.030 --> 04:48.980
我们将使用prod函数, 这是numpy的一个函数, 它有一个快捷方式｡ 

04:48.980 --> 04:56.560
所以, 我们输入我们想要得到的乘积｡ 

04:56.930 --> 05:02.600
就像我们说的, 这是我们重量形状的一维, 二维和三维｡ 

05:02.600 --> 05:06.110
为了得到这个, 我们可以使用我们的重量形状｡ 

05:06.980 --> 05:10.300
并得到这三个维度的索引｡ 

05:10.310 --> 05:18.770
所以我们说它包括了一维到三维, 所以排除了四维｡ 

05:18.770 --> 05:23.990
这就是我们可以得到它的方法, 因为这里的上界不包括在内｡ 

05:24.110 --> 05:26.300
所以这正是我们想要的｡ 

05:26.300 --> 05:28.880
扇出也是如此｡ 

05:30.660 --> 05:39.330
正如我们所说, 扇出是维度的乘积, 零乘以维度, 2乘以维度3｡

05:39.510 --> 05:45.480
这里我们可以得到从2到4的指数｡ 

05:45.480 --> 05:52.140
这样我们就得到了二维和三维的乘积, 然后我们可以把它乘以零维,

05:52.140 --> 05:58.710
我们可以用索引为零的权重形状来访问零维｡

05:59.010 --> 06:09.180
所以总而言之, 这就是点心一次, 点心二次, 点心三次和｡ 

06:09.950 --> 06:11.660
就在我们下面｡ 

06:13.120 --> 06:14.170
吉姆零｡ 

06:14.880 --> 06:20.010
倍黯以倍黯三种我们的方式, 塑造, 罗列轻重｡ 

06:20.100 --> 06:25.500
好了,

06:25.680 --> 06:32.640
现在我们要用这两个值扇入和扇出来进行初始化, 因为我们要计算一个新值, 我们称之为W界,

06:32.640 --> 06:40.620
它等于平方根, 我们可以用函数和p, 通过之前的脚本得到｡

06:40.620 --> 06:52.230
所以6的平方根除以扇, 再加上扇出, 所以扇进, 再加上扇出, 我们就这样｡ 

06:52.590 --> 06:57.870
所以这个W界在某种程度上代表了暂定权重的大小｡ 

06:57.990 --> 06:59.520
我们为什么会得到这个？

06:59.520 --> 07:15.090
因为我们现在要做的就是生成一些随机权值这些权值与权值张量的大小成反比, 因为我们现在要做的就是取新的网络M.

07:16.030 --> 07:18.040
然后得到它的重量｡ 

07:18.370 --> 07:22.240
所以通过仍取属性权重, 则超额｡ 

07:22.270 --> 07:25.240
数据就是传感器本身｡ 

07:25.910 --> 07:36.290
然后从这个权重张量中, 我们将生成一些随机权重, 这些随机权重与权重张量的大小成反比｡

07:36.960 --> 07:45.000
所以在这个一致函数中, 现在我们必须输入一个下界, 它是负的W界, 而上界,

07:45.180 --> 07:48.570
它是正的W界｡

07:49.980 --> 07:52.320
这是重量｡ 

07:52.320 --> 07:57.380
现在我们需要初始化偏差和偏差的好消息｡ 

07:57.390 --> 07:58.910
这将是简单得多｡ 

07:58.920 --> 08:02.130
我们将把它们都初始化为零｡ 

08:02.840 --> 08:07.150
为了得到这些bios, 我们从模型中取出它们｡ 

08:07.160 --> 08:09.320
当然, 那是我们的神经网络｡ 

08:09.650 --> 08:13.340
而偏见的属性就是偏见｡ 

08:13.670 --> 08:21.710
同样的, 我们也存在于数据中, 然后我们要用一种方法, 即分数填充法,

08:21.710 --> 08:26.990
你可能已经猜到了, 它是用零来填充偏差张量的｡

08:27.080 --> 08:31.310
如果是零, 我们必须在这里指定要用零填充｡ 

08:31.430 --> 08:33.380
这就是我在这里输入的原因｡ 

08:33.380 --> 08:33.980
零｡ 

08:34.370 --> 08:34.760
好吧, 我会的

08:34.760 --> 08:43.400
总之, 我们生成一些与张量权重大小成反比的随机权重, 并将偏差初始化为零｡

08:43.670 --> 08:44.030
好吧, 我会的

08:44.030 --> 08:49.430
以上是卷积连接的初始化｡ 

08:49.550 --> 08:52.700
现在, 我们需要对完整连接执行相同的操作｡ 

08:53.060 --> 09:00.320
所以我们要添加一个新的条件, Elif, 我们采用这个技巧, 我们使用第一个类名,

09:00.320 --> 09:04.910
也就是这个变量, 它包含了连接的不同名称｡

09:04.910 --> 09:09.230
因此, 如果类名相同, 我们使用定义的方法｡ 

09:10.170 --> 09:18.900
这次我们用引号引上一个完整的连接, 它是一个经典的线性连接和一个经典的人工神经网络｡

09:19.140 --> 09:30.060
所以它的名字是线性的, 我们要用这个技巧来表示, 我们希望它不等于-1｡

09:31.010 --> 09:38.840
这是第九类细线性的端点, 不同的是, 负一意味着如果联络是线性的, 也就是说,

09:38.840 --> 09:40.940
如果我们有一个经典的全联络｡

09:41.090 --> 09:44.480
那么在这种情况下, 我们如何初始化权重？

09:44.570 --> 09:47.090
好吧, 一切都会一样的｡ 

09:47.090 --> 09:55.460
我们将引入一个权重形状变量, 它不会删除第一个变量, 因为我们将在这种情况下或那种情况下｡

09:55.460 --> 09:57.020
所以它将不一样｡ 

09:57.020 --> 09:59.210
所以我们完全可以重复使用｡ 

09:59.690 --> 10:01.250
那就一样｡ 

10:01.250 --> 10:09.470
我们将引入一个扇入变量, 这次它将不等于这三个维度的乘积｡

10:09.470 --> 10:13.580
但是实际上这一次它将等于干脆｡ 

10:15.200 --> 10:16.940
我提过一个吗？

10:17.120 --> 10:23.510
这是因为对于全连接, 连接比卷积连接少｡ 

10:23.660 --> 10:28.250
你知道, 你在N和CNN的直觉讲座上看到过这个｡ 

10:28.280 --> 10:32.120
全连接的尺寸比回旋连接的尺寸小｡ 

10:32.360 --> 10:42.710
基本上我们只取一维, 然后我们有一个扇形展开的变量, 然后用它来计算w界｡

10:43.010 --> 10:49.730
这一维是指数为零的权重形状｡ 

10:49.730 --> 10:51.290
那是零维｡ 

10:51.320 --> 10:55.010
好的, 那么计算w界, 它是一样的｡ 

10:55.310 --> 11:01.430
它是6的平方根除以扇形展开和扇形展开之和｡ 

11:01.580 --> 11:04.460
好了, 我们走吧｡ 

11:04.640 --> 11:09.590
好消息是, 它和以前的完全一样｡ 

11:09.950 --> 11:19.550
我们对权重使用统一函数, 对偏置使用填充函数, 以获得相同类型的初始化｡

11:19.760 --> 11:24.250
但这一次的扇入和扇出不同, 因此w界限也不同｡ 

11:24.260 --> 11:26.060
所以这是同样的原理｡ 

11:26.060 --> 11:27.260
这是同一个想法｡ 

11:27.290 --> 11:32.690
这里唯一的变化是, 我们有更少的维度,

11:32.690 --> 11:38.180
用于全连接, 因此, 更简单的计算这个权重的边界, 来生成这些随机权重｡

11:39.070 --> 11:42.080
但好消息是现在已经准备好了｡ 

11:42.100 --> 11:50.010
不仅这个等待在它的功能是准备好了, 但现在我们有我们的两个工具, 所以我们准备开始建设大脑｡

11:50.020 --> 11:51.140
所以我等不及了｡ 

11:51.160 --> 11:53.310
当然, 这将是最令人兴奋的部分｡ 

11:53.320 --> 11:59.860
这只是为了热身, 让我们为大事件做好准备, 所以我们将在下一个教程中处理｡

11:59.860 --> 12:01.690
实际上, 这需要几个教程｡ 

12:01.690 --> 12:08.020
当然, 我们将从制作眼睛开始, 然后记住我们将添加一个lshtm来学习输入的时间属性,

12:08.020 --> 12:12.010
然后我们将处理演员和评论家｡

12:12.010 --> 12:16.810
这就是我们要用到的两个函数, 规范化列, 初始化和权重｡ 

12:16.810 --> 12:18.370
所以我等不及要这么做了｡ 

12:18.370 --> 12:22.360
我们现在要做一些非常强大的东西, 所以做好准备｡ 

12:22.600 --> 12:23.770
在那之前, 好好享受吧｡ 

12:23.770 --> 12:24.310
一､ 
