神经网络模型无法正常工作时我们应该做什么(系列)——初始化网络权重(Initialized Network Weights)

欢迎访问我的个人博客:zengzeyu.com

前言


当你进入深度学习领域,准备好深度神经网络,开始进行训练时,遇到这样一个大部分新手都会遇到的问题:你的神经网络没法正常工作,而你不知道该如何去修正它。你去问你的老板或者导师,他们也不知道该如何处理,因为在深度神经网络面前,他们和你一样也是新手。那么现在该如何来处理呢?
幸运的是我来啦!我列出了几乎所有新手都会犯的错误,以及我自己和身边一些学生在同样情况下遇到过的问题:

  1. 没有对数据进行标准化处理(Normalize)
  2. 没有检查结果(Results)
  3. 没有对数据进行预处理(Preprocess)
  4. 没有使用正则化方法(Regularlization)
  5. Batch Size 取值过大
  6. 学习率(Learning Rate)设置有误
  7. 最后一层 Layer 使用了错误的激活函数(Activation Function)
  8. 网络结构中包含了有害的梯度(Bad Gradient)
  9. 初始化网络权重(Network Weights)有误
  10. 神经网络结构过深(Too Deep)
  11. 使用了错误数目的隐藏单元(Hidden Units)

初始化网络权重(Initialized Network Weights)


What?

如果你没有正确的初始化你的神经网络权重,那么你的神经网络很有可能根本没法进行训练。神经网络中的其他数据元素都采用某种形式的正确或标准化的权重初始化操作,并将权重初始化为0,或者你自定义权重初始化随机进行权重初始化,这些方法都可能不起作用。

How?

权重初始化方法中,‘he’、‘lecun’和‘xavier’是比较流行的方法,它们几乎在任何情况下都可很好的工作。只要选择其中一个(我最喜欢的是‘lecun’),但也可以试验来选择最优的权值初始化方式。

Why?

你可能听说过使用“较小的随机数”来初始化神经网络的权重,但事情却并没有那么简单。所有上述的初始化操作都是慢慢的通过复杂且详细的数学方法推导出来的,而这些数学方法能正确的解释为什么这样做是最优的。更重要的是,神经网络结构的其他部分已经依据这些初始值来进行计算,并且经过经验来进行检验过,如果使用你自己的初始化方法会使重现其他研究人员的结果变得愈发困难。

And?

神经网络的其他层同样需要仔细的进行初始化。网络偏置(bias)初始化为0,而其他的更复杂的层(例如参数激活函数)需要使用他们自己的初始化方法,这样做的原因是他们都同等重要。


参考文献:
1. My Neural Network isn’t working! What should I do?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当 `ServletContext` 对象被初始化应该调用 `ServletContextListener` 接口中的 `contextInitialized()` 方法。 `ServletContextListener` 接口是监听 `ServletContext` 生命周期事件的接口,它定义了两个方法: - `contextInitialized(ServletContextEvent sce)`:当 `ServletContext` 对象被初始化,容器将调用该方法。在该方法中可以执行一些初始化操作,例如加载配置文件、创建数据库连接等。 - `contextDestroyed(ServletContextEvent sce)`:当 `ServletContext` 对象被销毁,容器将调用该方法。在该方法中可以执行一些清理操作,例如关闭数据库连接、释放资源等。 在实现 `ServletContextListener` 接口,需要在 `web.xml` 文件中配置监听器,以便容器能够正确地调用 `contextInitialized()` 方法。例如: ```xml <listener> <listener-class>com.example.MyServletContextListener</listener-class> </listener> ``` 在上面的例子中,我们在 `web.xml` 文件中配置了一个名为 `com.example.MyServletContextListener` 的监听器,当 `ServletContext` 对象被初始化,容器将自动调用该监听器的 `contextInitialized()` 方法。 需要注意的是,`ServletContext` 对象的初始化通常发生在 Web 应用程序启动,因此 `contextInitialized()` 方法的执行间也是在 Web 应用程序启动。在该方法中可以进行一些预处理操作,以便在Web应用程序运行期间能够更高效地处理请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值