【问题标题】:Matlab - running train function under command line environmentMatlab——命令行环境下运行train函数
【发布时间】:2011-07-28 14:38:41
【问题描述】:

我正在尝试使用train 函数来训练神经网络。问题是我想使用 SSH 连接通过 Internet 远程执行此操作。

但是,我收到以下错误:

??? Error using ==> nntraintool at 28
NNTRAINTOOL requires Java which is not available
Error in ==> trainbr>train_network at 257
[userStop,userCancel] = nntraintool('check');`
Error in ==> trainbr at 116`
[net,tr] = train_network(net,tr,data,fcns,param);`
Error in ==> network.train at 107`
[net,tr] = feval(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);`
Error in ==> ClassifierScript at 28`
[MFLDefectSNetwork,  tr] = train(MFLDefectSNetwork, TrainingInputSet,
TrainingSTargets);`

我认为我收到此错误是因为您想要执行神经网络训练时显示的训练界面。如果是这样,您能否告诉我,如何关闭该可视界面以便我可以使用 ssh 连接运行它。

【问题讨论】:

    标签: matlab command-line neural-network headless


    【解决方案1】:

    我相信您可以通过在调用nntraintool 之前将network objecttrainParam.showWindow 参数设置为false 来解决这个问题。例如,如果您的网络对象存储在变量net 中,您可以在训练之前执行此操作:

    net.trainParam.showWindow = false;
    

    这个MATLAB Newsgroup thread还建议你可能需要注释掉nntraintool中的一些行,你可以在编辑器中使用命令edit nntraintool打开。

    【讨论】:

    • 它不起作用...我尝试编辑nntraintool,但是在unix环境下打不开,我不知道为什么...
    • 你发现问题了吗?
    • 不完全...我只是使用了 ssh 的视觉连接,我尝试使用视觉远程连接来运行培训,这样就可以了...
    • @Simon:我发布了一个可能的解决方案,您可以检查一下(不启用X11转发)
    【解决方案2】:

    免责声明:以下内容未经测试。我目前只能访问 Windows 安装的 MATLAB)

    尝试以下命令序列来启动 MATLAB(请注意,您不应使用 -nojvm 选项):

    # on your machine
    ssh -x user@host
    
    # on the host
    unset DISPLAY
    matlab -nodisplay
    

    在 MATLAB 中,您可以明确检查 Java 是否可用:

    >> usejava('jvm')
    >> java.lang.String('str')
    

    接下来,继续创建和使用神经网络(您只需抑制training feedback):

    %# load sample dataset
    load simpleclass_dataset
    
    %# create and train neural network
    net = newpr(simpleclassInputs, simpleclassTargets, 20);
    net.trainParam.showWindow = false;          %# no GUI (as @gnovice suggested)
    net.trainParam.showCommandLine = true;      %# display in command line
    net.trainParam.show = 1;                    %# display every iteration
    net = train(net, simpleclassInputs, simpleclassTargets);
    
    %# predict and evaluate performance
    simpleclassOutputs = sim(net, simpleclassInputs);
    [c,cm] = confusion(simpleclassTargets,simpleclassOutputs)
    

    附带说明,即使我们禁用了所有显示,我们仍然可以绘制内容(尽管不可见)并将图形导出到文件中,正如我在 previous 相关的 questions 中所展示的那样...

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 2011-10-15
      • 1970-01-01
      • 2011-08-20
      • 2013-02-20
      • 1970-01-01
      • 2016-05-01
      • 2018-07-15
      • 2021-07-01
      相关资源
      最近更新 更多