h2o深水模型训练失败

时间:2018-01-04 06:52:21

标签: r nlp h2o tensorflow-gpu mxnet

在使用mxnet支持使用h2o deepwater尝试训练多类分类的lenet模型时,我遇到以下错误:

Loading H2O mxnet bindings. Found CUDA_HOME or CUDA_PATH environment variable, trying to connect to GPU devices. Loading CUDA library. Loading mxnet library. Loading H2O mxnet bindings. Done loading H2O mxnet bindings. Constructing model. Done constructing model. Building network. mxnet data input shape: (32,100) [10:40:16] /home/jenkins/slave_dir_from_mr-0xb1/workspace/deepwater-master/thirdparty/mxnet/dmlc-core/include/dmlc/logging.h:235: [10:40:16] src/operator/./convolution-inl.h:349: Check failed: (dshape.ndim()) == (4) Input data should be 4D in batch-num_filter-y-x [10:40:16] src/symbol.cxx:189: Check failed: (MXSymbolInferShape(GetHandle(), keys.size(), keys.data(), arg_ind_ptr.data(), arg_shape_data.data(), &in_shape_size, &in_shape_ndim, &in_shape_data, &out_shape_size, &out_shape_ndim, &out_shape_data, &aux_shape_size, &aux_shape_ndim, &aux_shape_data, &complete)) == (0)

我的设置细节:
* Ubuntu:16.04
*拉姆:12gb
*显卡:Nvidia 920mx驱动版:384.90
* Cuda:8.0.61
* cudnn:6.0
* R版本:3.4.3
* H2o版本:3.15.0.393& h2o-R包:3.16.0.2
* mxnet:0.11.0
*训练数据大小:400mb(当转换为h2o帧对象时,它大约为822mb)

我做过的事情:
1.)在运行h2o集群时为java堆提供足够的内存(java -Xmx9g -jar h2o.jar)
2.)从源代码为gpu建立mxnet 3.)通过nvidia-smi和系统监视器监视gpu和系统。他们决不会吃掉所有的公羊以显示记忆力不足的情况"问题。在错误出现之前,我仍然会有大约2-3gb的空闲时间 4.)尝试过tensorflow-gpu(从源代码构建)。检查点子列表确保它已安装但在R中的模型创建过程中出现错误:
    Error: java.lang.RuntimeException: Unable to initialize the native Deep Learning backend: null
 5.)我得到它的唯一方法是h2o deepwater与所有后端和w / wo GPU一起工作是通过安装教程中提供的docker设置。

我想在笔记本电脑上使用相同的功能,而不是使用Docker。还有什么方法可以使用CPU运行深水?链接Is it possible to build Deep Water/TensorFlow model in H2O without CUDA并未提供任何有用的答案。任何帮助或建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

从错误日志和mxnet.sym.Convolution文档中可以看出,您的数据需要采用var express = require('express') var bodyParser = require('body-parser') var Post = require('./models/post') var app = express() app.use(bodyParser.json()) app.get('/api/posts', function (req, res, next) { Post.find(function(err, posts) { if(err) { return next(err) } res.json(posts) }) }) app.post('/api/posts', function (req, res, next) { var post = new Post({ username: 'foo', body: 'bar' // username and body should be using req.body.propertyName }) post.save(function (err, post) { if(err) { return next(err) } res.json(201, post) }) }) app.listen(3000, function() { console.log('Server is listening on port', 3000) }) 格式。但是,您的数据看起来只包含两个维度(基于此日志:[batch, channels, height, width])。重新格式化数据,甚至包括大小为1的两个维度,使得输入形状为(1,1,32,100)应解决此问题。