• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Java
  • 标签: java  AE  autoencoder  降维  

资源简介

最近在尝试将AE算法改写为分布式架构就先写了个单机版,AE可以用来给数据降维,由于是基于ANN的框架写的所以要是想实现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; //输入数据维数
private int hiddenDim = 100; //中间数据维数
private int outputDim = 200; //输出数据维数
private double learningRate = 0.05; //学习速率

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];
}

/**
 * 初始化参数,随机赋-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));
}

/**
 * 设置成员变量值
 */
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;
}

/**
 * 正向计算一次
 */
public void calcOutput(){
//计算隐藏层输出
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]);
}

//计算输出层输出
double[] outputInput = new double[outputDim];
for (int i=0; i outputInput[i] = 0;
for (int j=0; j

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       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


评论

共有 条评论