我怎么操作由Python fitnet Matlab的函数吗?

8视图(30天)
嗨。我是一个日本大学的学生。
我将进行神经网络分析研究人工智能和使用MATLAB和Python。
以前,我们一直手动分析数以百计的数据一个一个地使用MATLAB的神经网络拟合程序(nftool),但现在我想自动化的过程中开始使用Python MATLAB和分析数据。
我想在Python中执行下面的代码。
网= fitnet (10,“trainlm”);
网=火车(网络,输入,目标);
输出=净(输入);
R = corrcoef(输出目标);
R = (1、2)
我写这在Python像下面
进口matlab.engine
eng = matlab.engine.start_matlab (“桌面”)
eng.workspace [“净”]= eng.fitnet (10)。
eng.net = eng.train (eng.net,输入,目标)
eng.workspace [“输出”]= eng.net(输入)
R = eng.corrcoef (eng eng.output,目标)
必要的数据加载在Matlab的工作区使用另一个Python代码。
在运行它,这个错误发生。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueError回溯(最近调用最后)
输入在[78],在<细胞系:3 > ()
1进口matlab.engine
2 eng = matlab.engine.start_matlab (“桌面”)
- - - - - > 3 eng.workspace [“净”]= eng.fitnet (10)。
文件~ \ anaconda3 \ env \ python_ex \ lib \网站\ matlabengineforpython-r2021a-py3.8.egg \ matlab引擎\ \ matlabengine.py: 70,在MatlabFunc。__call__(self, *args, **kwargs)
68年返回FutureResult(自我。_娜戈引擎(),未来,_标准输出,_stderr,函数宏指令= True)
69年其他的:
推荐- - - - - - > 70返回FutureResult(自我。_娜戈引擎(),未来,_标准输出,
71年_stderr,函数宏指令= True) .result ()
文件~ \ anaconda3 \ env \ python_ex \ lib \网站\ matlabengineforpython-r2021a-py3.8.egg \ matlab引擎\ \ futureresult.py: 67,在FutureResult。结果(self, timeout)
64年如果超时< 0:
65年筹集TypeError (pythonengine.getMessage (TimeoutCannotBeNegative))
推荐- - - - - - > 67返回自我。__future.result(超时)
文件~ \ anaconda3 \ env \ python_ex \ lib \网站\ matlabengineforpython-r2021a-py3.8.egg \ matlab引擎\ \ fevalfuture.py: 82,在FevalFuture。结果(self, timeout)
79年如果不是result_ready:
80年筹集TimeoutError (pythonengine.getMessage (MatlabFunctionTimeout))
82 - - - >自我。_结果= pythonengine.getFEvalResult(自我。_未来,自我。_nargout,, =自我。_呃=自我。_犯错)
83年的自我。_检索= True
84年返回自我。_结果
ValueError: MATLAB可以只返回1)×(n和n×1细胞阵列。
这个和这个是类似的情况的提问者。
根据这个线程,fitnet返回一个Python变量不能读,所以它无法处理它,是导致这个错误,我是这样认为的。
我的Matlab varsion R2021a。
我该如何代码正常工作吗?

接受的答案

大卫·威林汉
大卫·威林汉 2022年6月24日
你好,
这是在python代码,调用神经网络训练:
进口matlab.engine
eng = matlab.engine.start_matlab (“桌面”)
data = eng.simplefit_dataset (nargout = 2)
x =数据[0][0]
t =数据[1][0]
eng.workspace [“x”)= x
eng.workspace [“t”)= t
eng.evalc (“净= fitnet (10.0);“)
eng.evalc (“净=火车(净,x, t);“)
eng.evalc (“=净(x);“)
= eng.workspace (“出去”]
R = eng.corrcoef (t),
如果你想测试它从MATLAB可以运行(在上面的代码保存为“mypythonscript.py”:
pyrunfile (“mypythonscript.py”)
1评论
大卫·威林汉
大卫·威林汉 2022年6月24日
另一种选择是创建函数在MATLAB(附加),将减少调用evalc然后使用以下python代码调用:
进口matlab.engine
eng = matlab.engine.start_matlab (“桌面”)
data = eng.simplefit_dataset (nargout = 2)
x =数据[0][0]
t =数据[1][0]
hiddenSizes = 10.0
modelFilename = eng。myNNTrain (hiddenSizes x, t)
= eng.myNNPredict (x)
R = eng.corrcoef (t),

登录置评。

答案(1)

大卫·威林汉
大卫·威林汉 2022年6月22日
试着改变这条线在python中:
eng.workspace [“净”]= eng.fitnet(10.)
一个= matlab.double (10)
eng.workspace [“净”]= eng.fitnet(a)
解决你的错误吗?
2的评论

登录置评。

类别

找到更多的在从Python调用MATLAB帮助中心文件交换

s manbetx 845


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!