本文目錄一覽:
- 1、java能調用matlab神經網絡嗎
- 2、Matlab實現或者java編程實現 神經網絡 灰色模型預測
- 3、如何用70行Java代碼實現神經網絡算法
- 4、急求BP神經網絡算法,用java實現!!!
- 5、神經網絡的設計難還是java難
- 6、卷積神經網絡的Java實現有哪些
java能調用matlab神經網絡嗎
一、matlab版本必須支持java
在command 模式下面運行deploytool,如果支持該命令即可使用
二、matlab中function的書寫
%定義一個函數operation(a,b),求a與b的加減乘除運算,並返回結果
%函數定義function 輸出變量列表[s,m,…] 函數名(輸入變量列表)sum,sub,mul,div中
function [sum,sub,mul,div] = operation(a,b);
sum = a + b;
sub = a – b;
mul = a * b;
div = a / b;
end
PS:上面function後中括號部分與java中調用該operation的返回值有關係,在java中調用的 Object result[] = XXX.operation(4,a,b); 4表示有4個返回值,分別存放在result[0]到result[4]中。
三、使用matlab編譯生成jar
在matlab命令窗口下輸入 deploytool,就會彈出一個編譯窗口,
然後點擊,file,選擇new-deployment project,
然後選擇matlab builder jave。
name的地方填寫工程名,
ocation填寫該工程的存儲位置。
點擊ok。
然後,把m文件添加到工程中,先new一個class,這個class的名字就是你將來在java中需要new的class的名字,也就是matlab中operation所在的class名字然後將你的m文件添加到這個class目錄下,然後直接build即可。
四、在java中使用matlab的函數
現在eclipse下面new一個新的java工程,然後將第三部build成功後產生的文件夾下面的distrib目錄中的XXX.jar 以及你matlab安裝目錄下/toolbox/javabuilder/jar/javabuilder.jar加入你的java工程extend lib 中去。
然後你可以清晰的看到XXX.jar中包含的函數和類
五、可能碰到的問題
Exception in thread “main” java.lang.UnsatisfiedLinkError: Failed to find the library libmwmclmcrrt.so.7.13, required by MATLAB Builder JA, on java.library.path.
This library is typically installed along with MATLAB or the MCR, its absence may indicate an issue with that installation or the current path configuration.
The MCR version that this component is trying to use is: 7.13.
Failed to find the library mclmcrrt710.dll,required by MATLAB Builder JA, on java.library.path
原因是2009a要對應安裝mclmcrrt7.10。在MATLAB安裝目錄下查找:\toolbox\compiler\deploy\win32,找到MCRInstaller.exe 安裝,重啟Eclipse即可。
Matlab實現或者java編程實現 神經網絡 灰色模型預測
灰色預測模型為GM(1,1)
灰參數a和u的值:
a=-0.0323252892223847 u=14042.3315313962
原始序列預測值:
13205 14705 15188 15687 16203 16735 17285 17853 18439 19045
累加序列預測值:
14705 15188 15687 16203 16735 17285 17853 18439 19045 19671
級比值:
0.933017734755882 0.991731483427931 0.906095238095238 0.951546640889319 0.951264367816092 0.952798160113898 0.980668027064762 0.994977559307544 1.07637451115712
相對誤差值:
0 3.90438540431923 6.43063985387993 0.395441255218115 2.10782203579584 3.81930406598348 5.34849588953024 4.12878515843797 1.47641388551927 0.5323261370569
2013-2017年的預測值
2013 20317.4561851648
2014 20984.954243779
2015 21674.381900971
2016 22386.4596192006
2017 23121.9315305897
如何用70行Java代碼實現神經網絡算法
如何用70行Java代碼實現神經網絡算法
import java.util.Random;
public class BpDeep{
public double[][] layer;//神經網絡各層節點
public double[][] layerErr;//神經網絡各節點誤差
public double[][][] layer_weight;//各層節點權重
public double[][][] layer_weight_delta;//各層節點權重動量
public double mobp;//動量係數
public double rate;//學習係數
public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;llayernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;jlayernum[l]+1;j++)
for(int i=0;ilayernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//隨機初始化權重
}
}
}
//逐層向前計算輸出
public double[] computeOut(double[] in){
for(int l=1;llayer.length;l++){
for(int j=0;jlayer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;ilayer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐層反向計算誤差並修改權重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;jlayerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);
while(l–0){
for(int j=0;jlayerErr[l].length;j++){
double z = 0.0;
for(int i=0;ilayerErr[l+1].length;i++){
z=z+l0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隱含層動量調整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隱含層權重調整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距動量調整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距權重調整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//記錄誤差
}
}
}
public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}
急求BP神經網絡算法,用java實現!!!
見附件,一個基本的用java編寫的BP網絡代碼。
BP(Back Propagation)神經網絡是86年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一。BP網絡能學習和存貯大量的輸入-輸出模式映射關係,而無需事前揭示描述這種映射關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網絡的權值和閾值,使網絡的誤差平方和最小。BP神經網絡模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。
神經網絡的設計難還是java難
設計。神經網絡的設計難不是java難,語言的具體效率不如技術選擇和設計方面的整體效率重要。Java和Python都不適合高性能計算,但在性能上,Java還是略勝一籌。
卷積神經網絡的Java實現有哪些
卷積神經網絡有以下幾種應用可供研究:
1、基於卷積網絡的形狀識別
物體的形狀是人的視覺系統分析和識別物體的基礎,幾何形狀是物體的本質特徵的表現,並具有平移、縮放和旋轉不變等特點,所以在模式識別領域,對於形狀的分析和識別具有十分重要的意義,而二維圖像作為三維圖像的特例以及組成部分,因此二維圖像的識別是三維圖像識別的基礎。
2、基於卷積網絡的人臉檢測
卷積神經網絡與傳統的人臉檢測方法不同,它是通過直接作用於輸入樣本,用樣本來訓練網絡並最終實現檢測任務的。它是非參數型的人臉檢測方法,可以省去傳統方法中建模、參數估計以及參數檢驗、重建模型等的一系列複雜過程。本文針對圖像中任意大小、位置、姿勢、方向、膚色、面部表情和光照條件的人臉。
3、文字識別系統
在經典的模式識別中,一般是事先提取特徵。提取諸多特徵後,要對這些特徵進行相關性分析,找到最能代表字符的特徵,去掉對分類無關和自相關的特徵。然而,這些特徵的提取太過依賴人的經驗和主觀意識,提取到的特徵的不同對分類性能影響很大,甚至提取的特徵的順序也會影響最後的分類性能。同時,圖像預處理的好壞也會影響到提取的特徵。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/297197.html