【发布时间】:2017-04-12 12:03:22
【问题描述】:
按照这个例子: http://twiecki.github.io/blog/2016/07/05/bayesian-deep-learning/,可以使用每个变量的 float32 值在 gpu 上训练网络。
奇怪的是,如果更多的层被传递到神经网络(例如 5 层,每层有 800 个神经元),或者当使用更少的层将神经元的数量设置为更高的值时,我会收到如下错误消息:
0%| | 1/50000 [00:00最后一次调用):
文件“/opt/pycharm-community-2016.3.2/helpers/pydev/pydevd.py”,第 1596 行,>in globals = debugger.run(setup['file'], None, None, is_module)
文件“/opt/pycharm-community-2016.3.2/helpers/pydev/pydevd.py”,第 974 行,在 >run pydev_imports.execfile(file, globals, locals) # 执行脚本
文件“/home/d1211/PycharmProjects/BNN/withLasagne.py”,第 342 行,在 v_params, trace, ppc, y_pred = run_advi(likelihood)
文件“/home/d1211/PycharmProjects/BNN/withLasagne.py”,第 299 行,在 >run_advi total_size=total_size, learning_rate=1e-2, epsilon=1.0
文件“/home/d1211/pythonpath/lib/python/Theano-0.9.0-py2.7.egg/theano/configparser.py”,第 117 行,在 res 返回 f(*args, **kwargs)
文件“/home/d1211/pythonpath/lib/python/pymc3-3.1rc3-py2.7.egg/pymc3/variational/advi_minibatch.py”,第 528 行,在 advi_minibatch 中
raise FloatingPointError('NaN 发生在 ADVI 优化中。')
FloatingPointError: NaN 在 ADVI 优化中发生。
另一方面,当使用 float64 变量时没有错误。
所以我猜想必须存储的变量数量太大,但我不明白这是如何连接到 float32/float64 值的,这只是精度的平均值。
你能帮我理解一下吗?
【问题讨论】:
-
真丢脸,从我的巨大层到 10 个神经元的输出的权重太小,无法用 float32 整数计算。所以完全没有问题
标签: neural-network pymc3