-
大小: 3KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-02
- 語(yǔ)言: Java
- 標(biāo)簽: java??AE??autoencoder??降維??
資源簡(jiǎn)介
最近在嘗試將AE算法改寫為分布式架構(gòu)就先寫了個(gè)單機(jī)版,AE可以用來(lái)給數(shù)據(jù)降維,由于是基于ANN的框架寫的所以要是想實(shí)現(xiàn)ANN的功能略作修改即可

代碼片段和文件信息
package?ANN;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileOutputStream;
import?java.io.FileReader;
import?java.io.PrintStream;
import?java.util.Random;
import?java.util.StringTokenizer;
public?class?ANN?{
private?int?inputDim?=?200; //輸入數(shù)據(jù)維數(shù)
private?int?hiddenDim?=?100; //中間數(shù)據(jù)維數(shù)
private?int?outputDim?=?200; //輸出數(shù)據(jù)維數(shù)
private?double?learningRate?=?0.05; //學(xué)習(xí)速率
private?double[][]?weightInputHidden;
private?double[][]?weightHiddenOutput;
private?double[]?hiddenThreshold;
private?double[]?outputThreshold;
private?double[]?hiddenOutput;
private?double[]?outputOutput;
private?double[]?desiredOutput;
private?double[]?inputValues;
/**
?*constructor?
?*/
public?ANN(){
weightInputHidden?=?new?double[inputDim][hiddenDim];
weightHiddenOutput?=?new?double[hiddenDim][outputDim];
hiddenThreshold?=?new?double[hiddenDim];
outputThreshold?=?new?double[outputDim];
inputValues?=?new?double[inputDim];
desiredOutput?=?new?double[outputDim];
hiddenOutput?=?new?double[hiddenDim];
outputOutput?=?new?double[outputDim];
}
/**
?*?初始化參數(shù),隨機(jī)賦-0.5~0.5之間的值
?*/
public?void?initialize(){
Random?rand?=?new?Random();
for?(int?i=0;?i for?(int?j=0;?j weightInputHidden[i][j]?=?rand.nextDouble()?-?0.5;
}
for?(int?i=0;?i for?(int?j=0;?j weightHiddenOutput[i][j]?=?rand.nextDouble()?-?0.5;
}
for?(int?i=0;?i hiddenThreshold[i]?=?rand.nextDouble()?-?0.5;
}
for?(int?i=0;?i outputThreshold[i]?=?rand.nextDouble()?-?0.5;
}
}
/**
?*?sigmod
?*/
public?double?sigmoidFunc(double?x){
return?1?/?(1?+?Math.exp(-x));
}
/**
?*?設(shè)置成員變量值
?*/
public?void?setInputDim(int?inputDim){
this.inputDim?=?inputDim;
}
public?void?setHiddenDim(int?hiddenDim){
this.hiddenDim?=?hiddenDim;
}
public?void?setOutputDim(int?outputDim){
this.outputDim?=?outputDim;
}
public?void?setLearningRate(double?learningRate){
this.learningRate?=?learningRate;
}
/**
?*?返回成員變量
?*/
public?double?getLearningRate(){
return?learningRate;
}
public?int?getInputDim(){
return?inputDim;
}
public?int?getHiddenDim(){
return?hiddenDim;
}
public?int?getOutputDim(){
return?outputDim;
}
/**
?*?正向計(jì)算一次
?*/
public?void?calcOutput(){
//計(jì)算隱藏層輸出
double[]?hiddenInput?=?new?double[hiddenDim];
for?(int?i=0;?i hiddenInput[i]?=?0;
for?(int?j=0;?j hiddenInput[i]?+=?inputValues[j]?*?weightInputHidden[j][i];
}
//減去偏置
hiddenInput[i]?=?hiddenInput[i]?-?hiddenThreshold[i];
hiddenOutput[i]?=?sigmoidFunc(hiddenInput[i]);
}
//計(jì)算輸出層輸出
double[]?outputInput?=?new?double[outputDim];
for?(int?i=0;?i outputInput[i]?=?0;
for?(int?j=0;?j
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????6877??2015-03-19?16:14??AE\ANN.java
?????文件???????1111??2015-03-19?16:15??AE\GenTrainTestData.java
?????目錄??????????0??2015-03-19?16:20??AE
?????文件?????????39??2018-07-26?13:44??test.txt
-----------?---------??----------?-----??----
?????????????????8027????????????????????4
評(píng)論
共有 條評(píng)論