1、mxnet动手学深度学习
nn.Sequential,定义网络更简单
nn.block 定义网络更灵活,自己实现一个层通常用
net.initialize() #参数必须初始化,否则报错
net(x)
print net
2、初始化访问参数:
3、bn 层
是,卷积层是通道 间进行均值0方差1 ,bchw b1hw
全连接是样本间均值0 方差1, bout 1out
训练和测试,的区别,
3、nd …
x=nd.random.uniform(shape=(32,3,8,8)
4、gluon 定义网络
net = nn.Sequential()
with net.name_scope():
net.add(
nn.Dropout(0.5)
nn.AvgPoool2D(pool_size=5)
nn.Flatten()
)
5、inception 思想,用并行线路,不用串行线路
通常是 蓝色和红色(池化),串行到一起,现在将不同的特征 并行
绿色是降低维度,,四个输出的维度不一样,但是bhw 一样,输出concat 就是400
蓝色,11 小尺寸, 33 中等尺寸信息, 5*5 大吃寸信息
第六课,关于symbol 和 ndarray,符号式编程和命令式
net.hybridize(),会自动把ndarray网络 ,变成 symbol ,执行
symbol 执行更快,是因为把数据的计算都放到后台,并且不依赖python,所以期间不能print调试打印,不是等待计算完成再计算下一个计算,因此时间上类似于并行执行,速度很快,但是内存消耗会更多,计算过程不是按照代码的顺序执行的,
延后执行,可以是系统有更多空间做性能优化,但是一般每个批量处理至少一个同步函数,例如对损失函数进行评估(计算输出一次损失值,就不是丢到后台,而是等待把结果运行出来,再进行下一段程序),避免将更多任务同时放进后端,占用较多的内存
类似于大部分并行,一段是串行执行,同时多个串行一起执行,对时间和内存的平衡
内存消耗会更大。但是时间会更少一点