- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 1
import java.util.Random;
public class DBN {
public int N;
public int n_ins;
public int[] hidden_layer_sizes;
public int n_outs;
public int n_layers;
public HiddenLayer[] sigmoid_layers;
public RBM[] rbm_layers;
public LogisticRegression log_layer;
public Random rng;
public static double sigmoid(double x) {
return 1.0 / (1.0 + Math.pow(Math.E, -x));
}
//DBN 的构造函数 N 为样本的个数, n-ins 为特征个数, hidden_layer_sizes 为 隐藏层的结构, n-outs 为输出维数, n-layers 为隐藏层个数, rng 为随机数实例
public DBN(int N, int n_ins, int[] hidden_layer_sizes, int n_outs, int n_layers, Random rng) {
int input_size;
this.N = N; // 赋值样本数目
this.n_ins = n_ins; //赋值特征个数
this.hidden_layer_sizes = hidden_layer_sizes; //赋值隐藏层结构
this.n_outs = n_outs; // 赋值输出维数
this.n_layers = n_layers; // 赋值隐藏层数目
this.sigmoid_layers = new HiddenLayer[n_layers]; // 声明两个隐藏层
this.rbm_layers = new RBM[n_layers]; //声明两个RBM对应每个隐藏层
if(rng == null) this.rng = new Random(1234); // 获取一个随机数值
else this.rng = rng;
// construct multi-layer 初始化每个隐藏层
for(int i=0; i<this.n_layers; i++) {
if(i == 0) {
input_size = this.n_ins; //第一层隐藏层的输入为样本的特征的个数
} else {
input_size = this.hidden_layer_sizes[i-1]; // 后面的隐藏层的输入为上一层隐藏层的输出,也就是上一层的隐藏层节点的个数。
}
// sigmoid 层是用来计算的, rbm 是用来调整 w , b , c 的
// construct sigmoid_layer 初始化每个隐藏层 , 初始化做的事情就是给W和b赋随机值
this.sigmoid_layers[i] = new HiddenLayer(this.N, input_size, this.hidden_layer_sizes[i], null, null, rng);
// construct rbm_layer 初始化玻尔兹曼机,其实也就是初始化,W, b , c 其中,w , b 用的是hiddenlayer的
this.rbm_layers[i] = new RBM(this.N, input_size, this.hidden_layer_sizes[i], this.sigmoid_layers[i].W, this.sigmoid_layers[i].b, null, rng);
}
//在完成每一层的构建之后,构建一个输出的逻辑回归层
// layer for output using LogisticRegression, 参数为样本个数N, 输入为网络结构最后一层的输出数, 输出为DBM网络设置的输出维数
this.log_layer = new LogisticRegression(this.N, this.hidden_layer_sizes[this.n_layers-1], this.n_outs);
}
//对DBN网络进行一个预训练,目的是为每一层先构造更好的W和b, 先使得网络更好的拟合样本的分布,类似于先把点放在最后值的附近
public void
您可能关注的文档
- 整理C语言简介.doc
- 整理C语言编写123.n.doc
- 整理c语言课程设计报告 数独.doc
- 整理d t n l拼读训练.doc
- 整理D2.硕士学位申请书.doc
- 整理DCDC降压电路.doc
- 整理DCS规格书模板).doc
- 整理DEBIT NOTE英文格式 2).doc
- 整理DEBIT NOTE英文格式.doc
- 整理DFS与OS和PFS区别.doc
- 2023年湖北省武汉市东湖区城市管理局公开招聘《行政职业能力测验》模拟试卷(答案详解版).docx
- 2024年保康县实绩考核评价中心办公室综合岗招录1人《行政职业能力测验》模拟试卷(答案详解版).docx
- 2024年恩施市三岔镇人民政府项目管理岗招录1人《行政职业能力测验》模拟试卷(答案详解版).docx
- 2023年广西防城港市住房公积金管理中心招聘编外职工3人笔试《行政职业能力测验》模拟试卷(答案详解版).docx
- 2024教师顶岗实习报告总结(精选34篇).pdf
- 2024教师节通讯稿(精选30篇).pdf
- 2024建团102周年学生演讲稿(精选35篇).pdf
- 2024交通安全宣传演讲稿范文(精选35篇).pdf
- 政治●辽宁卷丨2022年辽宁省普通高中学业水平选择性考试政治试卷及答案.pdf
- 政治●河北卷丨2021年普通高等学校招生全国统一考试政治试卷及答案.pdf
文档评论(0)