Java中调用matlab的ANN神经网络工具箱函数问题解决

问题:使用matlab神经网络工具搭建ANN后保存为mat格式的文件,其在matlab中的结构为:

包含以下字段的 struct:

       inputs: [1×1 struct]

       net: [1×1 network]

matlab中封装为java调用的的代码且在matlab中能正常使用:

function [test,output] = guid(file,input_x )
test = load(file);
P2 = input_x';
output = net(P2);
end

正如红色标记其类型为network,但在java中调用时出现以下错误:

类 'network' 是未知对象类,或者没有有效的 'loadobj' 方法。该类的对象 'net' 已转换为结构体。(注意:Java下改变了net的类型,这是错误原因所在)

那我们如何解决上述问题呢?既然是类型改变,就可以从类型转换的角度去思考,通过查资料,我将原matlab代码修改如下:

function [test,output] = guid(file,input_x )
test = load(file);
net = network(test.net); %%进行转换
P2 = input_x';
output = net(P2);
end

再进行封装jar,在java中就成功了,即问题解决!

test grade = test();  //实例化
Object [] test = grade.guid(2,input_ANN, test_data); //java中调用代码

成功返回训练结果:   

 0.9891

 0.0103

 0.0006

 0.0000

================================思考总结===================================

人工智能、机器学习盛行当下,对于初学者matlab无疑是一个值得选择的一个平台,可以迅速将思路付诸于实践,我的系统采用java实现,为发挥matlab自身独有的快速计算和矩阵处理及封装了大量神经网络算法,初期我选择了将其封装为jar包,供java使用,实践结果证明在数据量及业务复杂度不高的情况下,其在效率和速度上都在可接受范围内。反之,则在速度上差强人意还是需要选择python等机器学习平台如TensorFlow等来实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值