机器学习和生物信息学实验室联盟

标题: Deep Learning代码 [打印本页]

作者: xmubingo    时间: 2013-4-24 14:55
标题: Deep Learning代码
本帖最后由 xmubingo 于 2013-4-24 14:57 编辑

Github中地址:    https://github.com/yusugomori/DeepLearning


我试过DBN可以运行,并且输入输出很简单。

训练数据:
  1.                 // training data
  2.                 int[][] train_X = {
  3.                         {1, 1, 1, 0, 0, 0},
  4.                         {1, 0, 1, 0, 0, 0},
  5.                         {1, 1, 1, 0, 0, 0},
  6.                         {0, 0, 1, 1, 1, 0},
  7.                         {0, 0, 1, 1, 0, 0},
  8.                         {0, 0, 1, 1, 1, 0}
  9.                 };

  10.                 int[][] train_Y = {
  11.                         {1, 0},
  12.                         {1, 0},
  13.                         {1, 0},
  14.                         {0, 1},
  15.                         {0, 1},
  16.                         {0, 1},
  17.                 };
复制代码
train_X中保存训练数据,6个样本,每个样本有6维。
train_Y中保存训练数据的类标。6个样本对应6个类标。

测试数据:
  1.                 // test data
  2.                 int[][] test_X = {
  3.                         {1, 1, 0, 0, 0, 0},
  4.                         {1, 1, 1, 1, 0, 0},
  5.                         {0, 0, 0, 1, 1, 0},
  6.                         {0, 0, 1, 1, 1, 0},
  7.                 };

  8.                 double[][] test_Y = new double[test_N][n_outs];
复制代码
test_X中保存测试数据,4个样本,每个样本还是6维。
test_Y中保存预测出来的每个类别概率分布。

比如,运行之后test_Y为:
  1. 0.5345716009870072 0.46542839901299277
  2. 0.5289767904336489 0.47102320956635113
  3. 0.05782124949129521 0.9421787505087047
  4. 0.051671964708330416 0.9483280352916696
复制代码



还有C,C++,python版本的代码。可以在附件中下载。
[attach]1420[/attach]






作者: chenwq    时间: 2013-4-24 16:42
提示: 该帖被管理员或版主屏蔽
作者: xmubingo    时间: 2013-4-24 16:58
支持double类型的输入。

原代码是int数据,不太适用,还是double类型好。牵一发而动全身,我已经将double类可运行代码改好。

入口也比较简单:
  1.         public static void main(String[] args) {

  2.                 double[][] train_X = { { 1, 1, 1, 0, 0, 0 }, { 1, 0, 1, 0, 0, 0 },
  3.                                 { 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 1, 1, 0 },
  4.                                 { 0, 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 1, 0 } };

  5.                 double[][] train_Y = { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 1 },
  6.                                 { 0, 1 }, { 0, 1 }, };

  7.                 // test data
  8.                 double[][] test_X = { { 1, 1, 0, 0, 0, 0 }, { 1, 1, 1, 1, 0, 0 },
  9.                                 { 0, 0, 0, 1, 1, 0 }, { 0, 0, 1, 1, 1, 0 }, };

  10.                 double[][] test_Y = new double[4][2];

  11.                 test_dbn(train_X, train_Y, test_X, test_Y);

  12.                 // test
  13.                 for (int i = 0; i < 4; i++) {
  14.                         for (int j = 0; j < 2; j++) {
  15.                                 System.out.print(test_Y[i][j] + " ");
  16.                         }
  17.                         System.out.println();
  18.                 }
  19.         }
复制代码
[attach]1421[/attach]






作者: AmBeta    时间: 2013-7-14 20:58
应邹老师要求,我把师兄的代码封装成了weka中的分类器,这样大家就可以比较方便地体验一下Deep Learning了。

DL确实很难,因为神经网络就不容易。。。超多的参数,大家对参数有什么见解也希望可以分享一下~
作者: xmubingo    时间: 2013-7-19 21:52
AmBeta 发表于 2013-7-14 20:58
应邹老师要求,我把师兄的代码封装成了weka中的分类器,这样大家就可以比较方便地体验一下Deep Learning了。 ...

赞!
原作者的代码仍然有点粗糙,我并没有很好的理解dbn的原理,所以也无从下手,相信你能做的更好。




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2