call matlab neural network function from matlab python engine -
i trying use matlab neural network toolbox matlab python engine.
suppose example want emulate following example http://uk.mathworks.com/help/nnet/ref/fitnet.html
net = fitnet(10); net = train(net,x,t); view(net) y = net(x); perf = perform(net,y,t)
then have following python code:
import numpy np import sys sys.path.insert(0, '/home/donbeo/myapp/matlab_python_engine/installdir/lib/python3.4/site-packages/') n = 100 x = np.linspace(-10, 10, n) y = x**3 + x*2 + x + np.random.normal(0, .1, n) plt.plot(x, y) plt.show() import matlab.engine eng = matlab.engine.start_matlab() eng.net = eng.fitnet(10.); eng.net = eng.train(eng.net,x,t); y_est = eng.net(x); eng.quit()
when run line eng.net = eng.fitnet(10.);
i following error:
in [24]: --------------------------------------------------------------------------- typeerror traceback (most recent call last) <ipython-input-24-cc577dcdc93c> in <module>() ----> 1 eng.net = eng.fitnet(10.); /home/donbeo/myapp/matlab_python_engine/installdir/lib/python3.4/site-packages/matlab/engine/matlabengine.py in __call__(self, *args, **kwargs) 77 else: 78 return futureresult(self._engine(), future, nargs, _stdout, ---> 79 _stderr).result() 80 81 def __validate_engine(self): /home/donbeo/myapp/matlab_python_engine/installdir/lib/python3.4/site-packages/matlab/engine/futureresult.py in result(self, timeout) 105 106 self._result = pythonengine.getfevalresult( --> 107 self._future,self._nargout, none, out=self._out, err=self._err) 108 self._retrieved = true 109 return self._result typeerror: unsupported datatype returned matlab. in [25]:
how can solve?
edit:
the command eng.net = eng.fitnet(10);
returns :
error using network/subsasgn>network_subsasgn (line 553) "layers{1}.size" must positive integer. error in network/subsasgn (line 13) net = network_subsasgn(net,subscripts,v,netname); error in feedforwardnet>create_network (line 116) net.layers{i}.size = param.hiddensizes(i); error in feedforwardnet (line 69) net = create_network(param); error in fitnet>create_network (line 98) net = feedforwardnet(param.hiddensizes,param.trainfcn); error in fitnet (line 70) net = create_network(param); --------------------------------------------------------------------------- matlabexecutionerror traceback (most recent call last) <ipython-input-29-480a6805679e> in <module>() ----> 1 eng.net = eng.fitnet(10); /home/donbeo/myapp/matlab_python_engine/installdir/lib/python3.4/site-packages/matlab/engine/matlabengine.py in __call__(self, *args, **kwargs) 77 else: 78 return futureresult(self._engine(), future, nargs, _stdout, ---> 79 _stderr).result() 80 81 def __validate_engine(self): /home/donbeo/myapp/matlab_python_engine/installdir/lib/python3.4/site-packages/matlab/engine/futureresult.py in result(self, timeout) 105 106 self._result = pythonengine.getfevalresult( --> 107 self._future,self._nargout, none, out=self._out, err=self._err) 108 self._retrieved = true 109 return self._result matlabexecutionerror: file /home/donbeo/myapp/matlabr2015a/toolbox/nnet/nnet/@network/subsasgn.p, line 553, in network_subsasgn file /home/donbeo/myapp/matlabr2015a/toolbox/nnet/nnet/@network/subsasgn.p, line 13, in subsasgn file /home/donbeo/myapp/matlabr2015a/toolbox/nnet/nnet/nnnetwork/feedforwardnet.m, line 116, in create_network file /home/donbeo/myapp/matlabr2015a/toolbox/nnet/nnet/nnnetwork/feedforwardnet.m, line 69, in feedforwardnet file /home/donbeo/myapp/matlabr2015a/toolbox/nnet/nnet/nnnetwork/fitnet.m, line 98, in create_network file /home/donbeo/myapp/matlabr2015a/toolbox/nnet/nnet/nnnetwork/fitnet.m, line 70, in fitnet "layers{1}.size" must positive integer. in [30]:
the best thing in circumstances create matlab function can perform required actions , return python variables, can understand. matlab objects python cant understand best control objects in matlab, load them , save them in matlab every time call matlab engine operate. other solution use handle objects that's not perfect solution, each solution has ups , downs.
Comments
Post a Comment