-
大小: 3KB文件类型: .rar金币: 2下载: 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
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论