模型参数的延后初始化 讨论区

http://zh.diveintodeeplearning.org/chapter_deep-learning-computation/deferred-init.html

延迟初始化中,改变输入 x 的形状后会报错

我试的的是 改变 输入个数个出错,会影响到后面层weight的形状,改变批量大小不会出错

  1. 改变输入个数:x = x.reshape((2, 10)), 或同时改变批量大小和输入个数:x = x.reshape((1, 10))
    运行错误:mxnet.base.MXNetError: Shape inconsistent, Provided = [256,20], inferred shape=(256,10)
  2. 改变批量大小:x = x.reshape((1, 20))
    再次向前计算没有错误。

说明只有输入个数会影响再次向前计算net(x),因为根据新的输入个数推断出该层的权重参数形状与已经初始化完成的权重参数形状不同了。

关于练习那题的疑问,如果改变输入形状就报错的话,那么之前的丢弃法岂不是丢弃只发生一次?即首次前向计算时,各层参数形状就定了,之后的每次小批量训练时参数形状就不变了,此时丢弃的隐藏单元就固定了。。。对吗?

哦,知道了,丢弃只是特征置0,而非改变输入形状

1赞

dropout只是忽略每一层的某些输出,而不是改变每一层的结构和参数。

若果说前面几层net(X)出现 数值问题,后面根本没有计算;然后下次计算时却数值正常但部分参数根本没有推导shape出来。此时是否有继续推断余下shape再计算?