-
大小: 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
相关资源
- JAVA入门实验单机版单词测试程序
- 网易云微专业JavaWeb浙大wk男神的课程
- java多线程局域网聊天,服务器+客户端
- mysql-connector-java-5.1.25-bin-jar
- java导入导出全部文件jar包,ajax提交
- mysql-connector-java-5.1.34.jar
- Java web 动态网页与静态网页
- Java之JDBC连接数据库实现增删改查(
- JAVA100道习题集合
- Java操作系统课设之模拟进程管理系统
- JAVAFX之数独游戏多功能
- 共享单车微信小程序源码
- javadbf.4.1.jar
- Javaweb仿摩拜
- Java 对接快递接口
- java实现单机版和网络对战版五子棋程
- java 实现简单爬虫,爬取图片
- java-web文件上传demo,可解决多个安全
- 北邮大三java选修课oj课后作业1
- ps提取h264源码
- javax.comm jar包
- java反射demo169523
- java_jdk_api
- JSP+servlet+mysql网络订单系统包含数据库
- java上传文件到服务器任何文件
- java 调用okHttp3进行代码测试SpringBoot项
- java验证码
- 在腾讯云服务器基于sqlserver2012搭建基
- javabean+servlet+jsp实现圆的面积和周长计
- 计算机网络课设利用UDP实现聊天系统
评论
共有 条评论