亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? backprop.c

?? 這是cmu大學(xué)的一個研究小組編寫的神經(jīng)網(wǎng)絡(luò)中反向傳播算法的源代碼
?? C
字號:
/* ****************************************************************** * HISTORY * 15-Oct-94  Jeff Shufelt (js), Carnegie Mellon University *	Prepared for 15-681, Fall 1994. * ****************************************************************** */#include <stdio.h>#include <backprop.h>#include <math.h>#define ABS(x)          (((x) > 0.0) ? (x) : (-(x)))#define fastcopy(to,from,len)\{\  register char *_to,*_from;\  register int _i,_l;\  _to = (char *)(to);\  _from = (char *)(from);\  _l = (len);\  for (_i = 0; _i < _l; _i++) *_to++ = *_from++;\}/*** Return random number between 0.0 and 1.0 ***/double drnd(){  return ((double) random() / (double) BIGRND);}/*** Return random number between -1.0 and 1.0 ***/double dpn1(){  return ((drnd() * 2.0) - 1.0);}/*** The squashing function.  Currently, it's a sigmoid. ***/double squash(x)double x;{  return (1.0 / (1.0 + exp(-x)));}/*** Allocate 1d array of doubles ***/double *alloc_1d_dbl(n)int n;{  double *new;  new = (double *) malloc ((unsigned) (n * sizeof (double)));  if (new == NULL) {    printf("ALLOC_1D_DBL: Couldn't allocate array of doubles\n");    return (NULL);  }  return (new);}/*** Allocate 2d array of doubles ***/double **alloc_2d_dbl(m, n)int m, n;{  int i;  double **new;  new = (double **) malloc ((unsigned) (m * sizeof (double *)));  if (new == NULL) {    printf("ALLOC_2D_DBL: Couldn't allocate array of dbl ptrs\n");    return (NULL);  }  for (i = 0; i < m; i++) {    new[i] = alloc_1d_dbl(n);  }  return (new);}bpnn_randomize_weights(w, m, n)double **w;int m, n;{  int i, j;  for (i = 0; i <= m; i++) {    for (j = 0; j <= n; j++) {      w[i][j] = dpn1();    }  }}bpnn_zero_weights(w, m, n)double **w;int m, n;{  int i, j;  for (i = 0; i <= m; i++) {    for (j = 0; j <= n; j++) {      w[i][j] = 0.0;    }  }}void bpnn_initialize(seed){  printf("Random number generator seed: %d\n", seed);  srandom(seed);}BPNN *bpnn_internal_create(n_in, n_hidden, n_out)int n_in, n_hidden, n_out;{  BPNN *newnet;  newnet = (BPNN *) malloc (sizeof (BPNN));  if (newnet == NULL) {    printf("BPNN_CREATE: Couldn't allocate neural network\n");    return (NULL);  }  newnet->input_n = n_in;  newnet->hidden_n = n_hidden;  newnet->output_n = n_out;  newnet->input_units = alloc_1d_dbl(n_in + 1);  newnet->hidden_units = alloc_1d_dbl(n_hidden + 1);  newnet->output_units = alloc_1d_dbl(n_out + 1);  newnet->hidden_delta = alloc_1d_dbl(n_hidden + 1);  newnet->output_delta = alloc_1d_dbl(n_out + 1);  newnet->target = alloc_1d_dbl(n_out + 1);  newnet->input_weights = alloc_2d_dbl(n_in + 1, n_hidden + 1);  newnet->hidden_weights = alloc_2d_dbl(n_hidden + 1, n_out + 1);  newnet->input_prev_weights = alloc_2d_dbl(n_in + 1, n_hidden + 1);  newnet->hidden_prev_weights = alloc_2d_dbl(n_hidden + 1, n_out + 1);  return (newnet);}void bpnn_free(net)BPNN *net;{  int n1, n2, i;  n1 = net->input_n;  n2 = net->hidden_n;  free((char *) net->input_units);  free((char *) net->hidden_units);  free((char *) net->output_units);  free((char *) net->hidden_delta);  free((char *) net->output_delta);  free((char *) net->target);  for (i = 0; i <= n1; i++) {    free((char *) net->input_weights[i]);    free((char *) net->input_prev_weights[i]);  }  free((char *) net->input_weights);  free((char *) net->input_prev_weights);  for (i = 0; i <= n2; i++) {    free((char *) net->hidden_weights[i]);    free((char *) net->hidden_prev_weights[i]);  }  free((char *) net->hidden_weights);  free((char *) net->hidden_prev_weights);  free((char *) net);}/*** Creates a new fully-connected network from scratch,     with the given numbers of input, hidden, and output units.     Threshold units are automatically included.  All weights are     randomly initialized.     Space is also allocated for temporary storage (momentum weights,     error computations, etc).***/BPNN *bpnn_create(n_in, n_hidden, n_out)int n_in, n_hidden, n_out;{  BPNN *newnet;  newnet = bpnn_internal_create(n_in, n_hidden, n_out);#ifdef INITZERO  bpnn_zero_weights(newnet->input_weights, n_in, n_hidden);#else  bpnn_randomize_weights(newnet->input_weights, n_in, n_hidden);#endif  bpnn_randomize_weights(newnet->hidden_weights, n_hidden, n_out);  bpnn_zero_weights(newnet->input_prev_weights, n_in, n_hidden);  bpnn_zero_weights(newnet->hidden_prev_weights, n_hidden, n_out);  return (newnet);}void bpnn_layerforward(l1, l2, conn, n1, n2)double *l1, *l2, **conn;int n1, n2;{  double sum;  int j, k;  /*** Set up thresholding unit ***/  l1[0] = 1.0;  /*** For each unit in second layer ***/  for (j = 1; j <= n2; j++) {    /*** Compute weighted sum of its inputs ***/    sum = 0.0;    for (k = 0; k <= n1; k++) {      sum += conn[k][j] * l1[k];    }    l2[j] = squash(sum);  }}void bpnn_output_error(delta, target, output, nj, err)double *delta, *target, *output, *err;int nj;{  int j;  double o, t, errsum;  errsum = 0.0;  for (j = 1; j <= nj; j++) {    o = output[j];    t = target[j];    delta[j] = o * (1.0 - o) * (t - o);    errsum += ABS(delta[j]);  }  *err = errsum;}void bpnn_hidden_error(delta_h, nh, delta_o, no, who, hidden, err)double *delta_h, *delta_o, *hidden, **who, *err;int nh, no;{  int j, k;  double h, sum, errsum;  errsum = 0.0;  for (j = 1; j <= nh; j++) {    h = hidden[j];    sum = 0.0;    for (k = 1; k <= no; k++) {      sum += delta_o[k] * who[j][k];    }    delta_h[j] = h * (1.0 - h) * sum;    errsum += ABS(delta_h[j]);  }  *err = errsum;}void bpnn_adjust_weights(delta, ndelta, ly, nly, w, oldw, eta, momentum)double *delta, *ly, **w, **oldw, eta, momentum;{  double new_dw;  int k, j;  ly[0] = 1.0;  for (j = 1; j <= ndelta; j++) {    for (k = 0; k <= nly; k++) {      new_dw = ((eta * delta[j] * ly[k]) + (momentum * oldw[k][j]));      w[k][j] += new_dw;      oldw[k][j] = new_dw;    }  }}void bpnn_feedforward(net)BPNN *net;{  int in, hid, out;  in = net->input_n;  hid = net->hidden_n;  out = net->output_n;  /*** Feed forward input activations. ***/  bpnn_layerforward(net->input_units, net->hidden_units,      net->input_weights, in, hid);  bpnn_layerforward(net->hidden_units, net->output_units,      net->hidden_weights, hid, out);}void bpnn_train(net, eta, momentum, eo, eh)BPNN *net;double eta, momentum, *eo, *eh;{  int in, hid, out;  double out_err, hid_err;  in = net->input_n;  hid = net->hidden_n;  out = net->output_n;  /*** Feed forward input activations. ***/  bpnn_layerforward(net->input_units, net->hidden_units,      net->input_weights, in, hid);  bpnn_layerforward(net->hidden_units, net->output_units,      net->hidden_weights, hid, out);  /*** Compute error on output and hidden units. ***/  bpnn_output_error(net->output_delta, net->target, net->output_units,      out, &out_err);  bpnn_hidden_error(net->hidden_delta, hid, net->output_delta, out,      net->hidden_weights, net->hidden_units, &hid_err);  *eo = out_err;  *eh = hid_err;  /*** Adjust input and hidden weights. ***/  bpnn_adjust_weights(net->output_delta, out, net->hidden_units, hid,      net->hidden_weights, net->hidden_prev_weights, eta, momentum);  bpnn_adjust_weights(net->hidden_delta, hid, net->input_units, in,      net->input_weights, net->input_prev_weights, eta, momentum);}void bpnn_save(net, filename)BPNN *net;char *filename;{  int fd, n1, n2, n3, i, j, memcnt;  double dvalue, **w;  char *mem;  if ((fd = creat(filename, 0644)) == -1) {    printf("BPNN_SAVE: Cannot create '%s'\n", filename);    return;  }  n1 = net->input_n;  n2 = net->hidden_n;  n3 = net->output_n;  printf("Saving %dx%dx%d network to '%s'\n", n1, n2, n3, filename);  fflush(stdout);  write(fd, (char *) &n1, sizeof(int));  write(fd, (char *) &n2, sizeof(int));  write(fd, (char *) &n3, sizeof(int));  memcnt = 0;  w = net->input_weights;  mem = (char *) malloc ((unsigned) ((n1+1) * (n2+1) * sizeof(double)));  for (i = 0; i <= n1; i++) {    for (j = 0; j <= n2; j++) {      dvalue = w[i][j];      fastcopy(&mem[memcnt], &dvalue, sizeof(double));      memcnt += sizeof(double);    }  }  write(fd, mem, (n1+1) * (n2+1) * sizeof(double));  free(mem);  memcnt = 0;  w = net->hidden_weights;  mem = (char *) malloc ((unsigned) ((n2+1) * (n3+1) * sizeof(double)));  for (i = 0; i <= n2; i++) {    for (j = 0; j <= n3; j++) {      dvalue = w[i][j];      fastcopy(&mem[memcnt], &dvalue, sizeof(double));      memcnt += sizeof(double);    }  }  write(fd, mem, (n2+1) * (n3+1) * sizeof(double));  free(mem);  close(fd);  return;}BPNN *bpnn_read(filename)char *filename;{  char *mem;  BPNN *new;  int fd, n1, n2, n3, i, j, memcnt;  if ((fd = open(filename, 0, 0644)) == -1) {    return (NULL);  }  printf("Reading '%s'\n", filename);  fflush(stdout);  read(fd, (char *) &n1, sizeof(int));  read(fd, (char *) &n2, sizeof(int));  read(fd, (char *) &n3, sizeof(int));  new = bpnn_internal_create(n1, n2, n3);  printf("'%s' contains a %dx%dx%d network\n", filename, n1, n2, n3);  printf("Reading input weights...");  fflush(stdout);  memcnt = 0;  mem = (char *) malloc ((unsigned) ((n1+1) * (n2+1) * sizeof(double)));  read(fd, mem, (n1+1) * (n2+1) * sizeof(double));  for (i = 0; i <= n1; i++) {    for (j = 0; j <= n2; j++) {      fastcopy(&(new->input_weights[i][j]), &mem[memcnt], sizeof(double));      memcnt += sizeof(double);    }  }  free(mem);  printf("Done\nReading hidden weights...");  fflush(stdout);  memcnt = 0;  mem = (char *) malloc ((unsigned) ((n2+1) * (n3+1) * sizeof(double)));  read(fd, mem, (n2+1) * (n3+1) * sizeof(double));  for (i = 0; i <= n2; i++) {    for (j = 0; j <= n3; j++) {      fastcopy(&(new->hidden_weights[i][j]), &mem[memcnt], sizeof(double));      memcnt += sizeof(double);    }  }  free(mem);  close(fd);  printf("Done\n");  fflush(stdout);  bpnn_zero_weights(new->input_prev_weights, n1, n2);  bpnn_zero_weights(new->hidden_prev_weights, n2, n3);  return (new);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美a级理论片| 日韩成人精品在线观看| 精品视频色一区| 精品一区二区在线播放| 亚洲婷婷在线视频| 欧美tk丨vk视频| 欧美日韩中文一区| 丁香一区二区三区| 精品一区中文字幕| 天天影视色香欲综合网老头| 中文字幕免费不卡| 欧美成人精品二区三区99精品| 91网站在线播放| 国产91精品入口| 久久99国内精品| 天天影视网天天综合色在线播放| 国产精品久久国产精麻豆99网站| 精品久久久网站| 欧美精品日韩一区| 欧美性大战xxxxx久久久| 99久久久免费精品国产一区二区| 国精品**一区二区三区在线蜜桃| 日韩中文字幕亚洲一区二区va在线| 136国产福利精品导航| 国产日韩一级二级三级| 日韩欧美国产三级电影视频| 欧美日韩午夜精品| 色88888久久久久久影院野外| 成人久久18免费网站麻豆| 精品一区二区在线免费观看| 日本不卡123| 日本在线播放一区二区三区| 亚洲二区在线视频| 亚洲国产精品久久人人爱| 亚洲精品国产精华液| 18欧美乱大交hd1984| 一区在线观看视频| 中文字幕中文字幕在线一区 | 亚洲午夜在线观看视频在线| 中文字幕一区二区三中文字幕| 欧美极品美女视频| 国产精品视频一二| 18涩涩午夜精品.www| 亚洲色图19p| 一区二区理论电影在线观看| 一二三区精品福利视频| 亚洲激情图片一区| 亚洲一区二区三区视频在线播放 | 中文字幕第一区第二区| 国产欧美一区二区在线| 国产女主播在线一区二区| 国产精品免费观看视频| 国产精品成人一区二区艾草 | 伦理电影国产精品| 精品一区二区在线免费观看| 国产一区二区免费看| 成人一区二区三区中文字幕| av午夜精品一区二区三区| 色欲综合视频天天天| 精品视频资源站| 欧美一区二区在线不卡| 26uuu久久综合| 国产精品久久久久三级| 亚洲尤物在线视频观看| 日本va欧美va精品| 国产91精品在线观看| av日韩在线网站| 欧美群妇大交群的观看方式| 91精品国产综合久久国产大片| 精品奇米国产一区二区三区| 久久久国产精品午夜一区ai换脸| 中文一区二区完整视频在线观看| 亚洲精品视频自拍| 日韩av一区二区在线影视| 国产最新精品精品你懂的| www.性欧美| 欧美一区二视频| 国产精品国产三级国产| 五月激情综合网| 国产福利一区二区三区视频在线| 色狠狠一区二区| 日韩欧美美女一区二区三区| 国产精品精品国产色婷婷| 午夜精品久久久久影视| 国产成人在线视频网址| 欧美色图免费看| 久久久777精品电影网影网| 亚洲精品国产精华液| 黄色日韩三级电影| 在线免费精品视频| 国产亚洲欧美激情| 午夜成人在线视频| 色吊一区二区三区| 久久精品亚洲精品国产欧美kt∨ | 国产乱一区二区| 日本精品一区二区三区高清 | 亚洲精品免费播放| 激情小说亚洲一区| 欧美性videosxxxxx| 国产女人18毛片水真多成人如厕| 亚洲地区一二三色| 成人三级在线视频| 日韩精品一区二区三区中文不卡 | 国产美女精品在线| 欧美日韩精品三区| 最好看的中文字幕久久| 精品一区二区在线播放| 欧美日韩黄视频| 亚洲成av人综合在线观看| 久久国产三级精品| 欧美日韩国产高清一区| 中文字幕一区二区三区四区不卡 | 国产丝袜欧美中文另类| 日本免费在线视频不卡一不卡二| 色综合视频在线观看| xnxx国产精品| 毛片一区二区三区| 欧美精品三级在线观看| 一区二区不卡在线播放 | 免费人成黄页网站在线一区二区| 色综合av在线| 亚洲丝袜精品丝袜在线| 国产成人av资源| 国产欧美日本一区视频| 精品一区二区三区影院在线午夜| 在线不卡的av| 婷婷久久综合九色综合绿巨人| 日本精品一级二级| 亚洲欧美日韩人成在线播放| 不卡电影免费在线播放一区| 国产午夜久久久久| 国产精品一区免费在线观看| 精品国产亚洲一区二区三区在线观看 | 精品亚洲免费视频| 日韩一区二区三区高清免费看看| 亚洲成人一二三| 欧美老肥妇做.爰bbww| 亚洲福利国产精品| 3atv在线一区二区三区| 免费精品视频在线| 欧美大黄免费观看| 国模无码大尺度一区二区三区 | 一区二区三区.www| 欧美唯美清纯偷拍| 日日欢夜夜爽一区| 日韩一级高清毛片| 国产一区二区在线观看视频| 久久久影视传媒| 成人蜜臀av电影| 亚洲美女偷拍久久| 欧美在线视频你懂得| 亚洲成人你懂的| 日韩精品一区二区三区在线| 国产精选一区二区三区| 国产精品免费视频网站| 91色视频在线| 丝袜美腿一区二区三区| 欧美精品一区二区高清在线观看| 国产成人在线网站| 亚洲美女屁股眼交| 制服丝袜成人动漫| 国内精品久久久久影院薰衣草| 亚洲国产精品成人久久综合一区| 色综合欧美在线| 日韩电影免费在线看| 国产午夜亚洲精品不卡| 色综合久久久久久久久| 日本人妖一区二区| 国产欧美日韩三级| 欧美综合天天夜夜久久| 美女网站一区二区| 国产精品美女一区二区在线观看| 日本高清免费不卡视频| 老司机精品视频在线| 国产精品久久久久毛片软件| 精品视频免费在线| 国产毛片精品一区| 亚洲精品免费一二三区| 日韩欧美一级片| 91亚洲精品久久久蜜桃网站| 日精品一区二区| 国产精品二区一区二区aⅴ污介绍| 欧美天天综合网| 国产伦精品一区二区三区在线观看| 亚洲天堂久久久久久久| 欧美一级免费观看| 91免费观看视频| 久久99国产精品久久| 亚洲精品美国一| 久久久国产精品麻豆| 精品视频在线免费看| 成人网页在线观看| 免费在线观看视频一区| 亚洲人快播电影网| 久久综合九色综合97婷婷| 欧美日韩在线三级| www.日韩大片| 国产乱色国产精品免费视频| 日韩精品国产欧美| 亚洲精品国产成人久久av盗摄|