deepGS的结构和运行问题

    xiaoxiao2022-07-12  105

    运行说明

    bug1 我们在DeepGS 1.0版中测试了示例(**train_GSModel**),发现它可以成功获得。 信息如下: 加载所需的命名空间:**mxnet** 加载所需的包:mxnet [1]“图像大小等于原始的snp编号” 用1个设备开始训练 [1] Train-mae = 0.810270227050409 [2] Train-mae = 0.808830445028143

    PC中的错误消息可能是由于您的mxnet未成功安装。 请确保您可以运行短MXNetR例子(https://mxnet.incubator.apache.org/install/index.html): 库(mxnet) 一< - mx.nd.ones(C(2,3) ,ctx = mx.gpu()) b < - a * 2 + 1 b

    如果您无法尝试该示例,那么您可以尝试使用以下代码链接您的libmxnet.so sudo ldconfig / usr / local / cuda / lib64 /

    如果您可以运行该示例,那么您可以尝试我们更新的DeepGS版本1.1。 运行**train_deepGSModel**中的示例,您可能得到以下信息: 加载所需的命名空间:mxnet 加载所需的包:mxnet 开始使用1个设备进行培训 [1] Train-mae = 0.805358654037991 [1] Validation-mae = 0.82273542326875 [2] Train -mae = 0.804309009046412 [2] Validation-mae = 0.823836773245906

    如果您仍然无法在上述步骤后运行我们的DeepGS,请上传错误消息,我们将讨论如何解决它。 bug2 请确保您在DeepGS 1.1版的train_deepGSModel中尝试了我们的示例: 库(DeepGS) 数据(wheat_example) 标记< - wheat_example $ Markers y < - wheat_example $ y cvSampleList < - cvSampleIndex(length(y),10,1)

    cvIdx < - 1 trainIdx < - cvSampleList [[cvIdx]] $ trainIdx testIdx < - cvSampleList [[cvIdx]] $ testIdx trainMat < - Markers [trainIdx,] trainPheno < - y [trainIdx] validIdx < - sample(1:length( trainIdx),floor(length(trainIdx)0.1)) validMat < - trainMat [validIdx,] validPheno < - trainPheno [validIdx] trainMat < - trainMat [-validIdx,] trainPheno < - trainPheno [-validIdx] conv_kernel < - c(“ 118“)##卷积内核( fileter shape)conv_stride < - c(”11“) conv_num_filter < - c(8)##过滤器数量 pool_act_type < - c(”relu“)##下一个池的活动函数 pool_type < - c(“最大”)## max pooling shape pool_kernel < - c(“14”)## pooling shape pool_stride < - c(“1 * 4”)##池数kernerls fullayer_num_hidden < - c( 32,1 )fullayer_act_type < - c(“sigmoid”) drop_float < - c(0.2,0.1,0.05) cnnFrame < - list (conv_kernel = conv_kernel,conv_num_filter = conv_num_filter, conv_stride = conv_stride,pool_act_type = pool_act_type, pool_type = pool_type,pool_kernel = pool_kernel, pool_stride = pool_stride,fullayer_num_hidden = fullayer_num_hidden, fullayer_act_type = fullayer_act_type,drop_float = drop_float)

    markerImage = paste0(“1 *”,ncol(trainMat))

    trainGSmodel < - train_deepGSModel(trainMat = trainMat,trainPheno = trainPheno, validMat = validMat,validPheno = validPheno,markerImage = markerImage, cnnFrame = cnnFrame,device_type =“cpu”,gpuNum = 1,eval_metric =“mae”, num_round = 6000,array_batch_size = 30,learning_rate = 0.01, 动量= 0.5,wd = 0.00001,randomseeds = 0,initializer_idx = 0.01)

    您将获得: 使用1台设备开始培训 [1] Train-mae = 0.805207145042126 [1] Validation-mae = 0.822773229610175 [2] Train-mae = 0.804317240615709 [2] Validation-mae = 0.823776994412765

    bug3 实际上,输入数据的格式是严格的。 正如我们所描述的,trainPheno必须是N * 1的向量,其中N代表个体。

    我们检查了可能的原因,发现错误可能是输入格式。 在你的第一次和第二次尝试中,你得到: mx.nd.internal.dispatch.Ops(.Generic,e1,e2)中的错误: [11:41:33] src / operator / tensor /./…/ elemwise_op_common。 h:123:检查失败:分配(&dattr,(* vec)[i])第1个输入节点中的attr不兼容:预期[100],得到[100,1] 并且 mx.nd.internal.dispatch出错.Ops(.Generic,e1,e2): [20:25:46] src / operator / nn /…/ tensor /…/ elemwise_op_common.h:123:检查失败:assign(&dattr,(* vec)[ i])在第1个输入节点不兼容attr:预期[30],得到[30,1]

    这是因为你的数据中trainPheno的大小是1 * 100. 当我们在示例数据中重构trainPheno(从468 * 1更改为1 * 468)时,我们得到了类似的错误: exec $ update.arg中的错误。数组(arg.arrays,match.name,skip.null): [11:04:07] src / operator / nn /…/ tensor /…/ elemwise_op_common.h:123:检查失败:assign(&dattr,( * vec)[i])第0个输出节点中的attr不相容:预期[30],得到[30,1]。

    因此,请确保trainMat必须是训练模型的基因型矩阵(N×M; N个体,M个标记),并且trainPheno必须是训练模式的表型的载体(N * 1)。 更多详细信息,请参阅我们的train_deepGSModel函数说明中的Arguments部分。

    我们为两天前没有清楚地检查语法而道歉,实际上,在更新我们的代码(conv_kernel < - c(“1 * 18”)而不是conv_kernel < - c(“118”),conv_stride <之后,一些“*”丢失了 - c(“1 * 1”)不是conv_stride < - c(“11”),pool_kernel < - c(“1 * 4”)不是pool_kernel < - c(“14”)),真正的类型应该是在我们的train_deepGSModel函数描述的Examples部分中。

    您可以尝试以下(与我们的train_deepGSModel函数描述中的示例部分相同): data(wheat_example) 标记< - wheat_example $ Markers y < - wheat_example $ y cvSampleList < - cvSampleIndex(length(y),10,1) cvIdx < - 1 trainIdx < - cvSampleList [[cvIdx]] $ trainIdx testIdx < - cvSampleList [[cvIdx]] $ testIdx trainMat < - Markers [trainIdx,] trainPheno < - y [trainIdx] validIdx < - sample(1:length(trainIdx) ,floor(length(trainIdx)* 0.1)) validMat < - trainMat [validIdx,] validPheno < - trainPheno [validIdx] trainMat < - trainMat [-validIdx,] trainPheno < - trainPheno [-validIdx] conv_kernel < - c(“1 * 18“)##卷积内核(fileter shape) conv_stride < - c(“1 * 1”) conv_num_filter < - c(8)##过滤器数量 pool_act_type < - c(“relu”)##下一个池的活动函数 pool_type < - c(“max”)## max pooling shape pool_kernel < - c(“1 * 4”)## pooling shape pool_stride < - c(“1 * 4”)##池数kernerls fullayer_num_hidden < - c( 32,1 )fullayer_act_type < - c(“ sigmoid“) drop_float < - c(0.2,0.1,0.05) cnnFrame < - list(conv_kernel = conv_kernel,conv_num_filter = conv_num_filter, conv_stride = conv_stride,pool_act_type = pool_act_type, pool_type = pool_type,pool_kernel = pool_kernel, pool_stride = pool_stride,fullayer_num_hidden = fullayer_num_hidden , fullayer_act_type = fullayer_act_type,drop_float = drop_float)

    markerImage = paste0(“1 *”,ncol(trainMat))

    trainGSmodel < - train_deepGSModel(trainMat = trainMat,trainPheno = trainPheno, validMat = validMat,validPheno = validPheno,markerImage = markerImage, cnnFrame = cnnFrame,device_type =“cpu”,gpuNum = 1,eval_metric =“mae”, num_round = 6000,array_batch_size = 30,learning_rate = 0.01, 动量= 0.5,wd = 0.00001,randomseeds = 0,initializer_idx = 0.01)

    此外,mxnet包已经多次更改,我们使用的当前版本是1.2.0。

    总之,请检查输入数据格式。 如果您仍然遇到错误,请更新您的代码和数据,我们会详细检查它们。

    如果您的计算机中有GPU,则可以将“device_type =”cpu“”更改为“device_type =”gpu“”以获得更快的体验。

    最好的祝愿。 bug3 实际上,我们使用Ubuntu 14.04和GPU来构建我们的DeepGS。

    为了与你的会话保持一致,我们在mac os上重新测试我们的DeepGS,会话信息是: R版本3.4.1(2017-06-30) 平台:x86_64-apple-darwin15.6.0(64位) 运行下:macOS High Sierra 10.13.3

    我们通过以下指令安装了mxnet(https://mxnet.incubator.apache.org/install/index.html): cran < - getOption(“repos”) cran [“dmlc”] < - “ https:// apache-mxnet.s3-accelerate.dualstack.amazonaws.com/R/CRAN/ “ 选项(回购= CRAN) install.packages(” mxnet“) 安装DeepGS 1.1之后,会话Infor正在:

    其他附件包: [1] DeepGS_1.1 mxnet_0.10.1

    我们应该注意,在mac os中,预编译版本是mxnet 0.10.1(默认情况下), 但是,在Ubuntu中,完整版本(我们使用的)是指令后面的mxnet 1.2.0(https://mxnet.incubator.apache。 org / install / index.html)。

    然后我们在我们的手册中运行代码并成功进行: 用1个设备开始培训 [1] Train-mae = 0.800936881634091 [1] Validation-mae = 0.883060586561138 [2] Train-mae = 0.801303223080193 [2] Validation-mae = 0.883761811396107

    我们为没有清楚地描述系统版本而道歉,我们在README.md中修改了这个系统信息。 为了与你的mac os保持一致,我们建议你重新安装预编译的mxnet 0.10.1而不是完整的mxnet 1.2.0。 bug4 @gulinlin您好,最新版本的mxnet可以从官方说明安装(https://mxnet.incubator.apache.org/install/)

    如果仍然无法编译,可以尝试以下步骤: git clone --no-checkout https://github.com/apache/incubator-mxnet cd incubator-mxnet git remote -v git fetch origin git branch -avv git checkout #check out you version git submodule update --init --recursive comple for CPU version (optional) make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=0 compile for GPU version make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda make rpkg R CMD INSTALLL mxnet_current_r.tar.gz

    完成这些步骤后,将成功安装mxnet,您可以通过以下方式进行测试: library(mxnet) a <- mx.nd.ones(c(2,3), ctx=mx.gpu()) b <- a*2+1 b

    值得注意的是,对于Linux操作系统,在编译时必须使用“apt-get”手动安装一些R包

    无论如何,我们强烈建议您使用我们开发的Docker镜像DeepGS,详细的安装步骤可在以下网址获得:https://github.com/cma2015/DeepGS/blob/master/DeepGS_User_Manual.pdf

    最新回复(0)