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

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

?? backprop.c

?? 這是一份基于人工神經(jīng)網(wǎng)絡(luò)的人臉訓(xùn)練源碼。可以用于訓(xùn)練識別表情
?? 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一区二区三区免费野_久草精品视频
亚洲日本在线视频观看| 日韩一区二区在线观看视频播放| 国产欧美日韩激情| 国产sm精品调教视频网站| 欧美经典一区二区三区| www.av精品| 亚洲国产欧美在线| 欧美一区二区三区色| 国产尤物一区二区| 中文字幕一区视频| 欧美日韩一区二区三区在线看| 午夜不卡av免费| 欧美精品一区二区三区一线天视频| 国产乱一区二区| 综合中文字幕亚洲| 在线综合视频播放| 国产成人一级电影| 亚洲影院久久精品| 欧美xingq一区二区| 国产成都精品91一区二区三| 亚洲精品国产精华液| 538prom精品视频线放| 国产精品一区二区x88av| 亚洲精品v日韩精品| 欧美成人性福生活免费看| 成人午夜电影久久影院| 午夜天堂影视香蕉久久| 国产清纯白嫩初高生在线观看91| 在线观看国产一区二区| 久久99九九99精品| 亚洲激情一二三区| 久久夜色精品国产欧美乱极品| 99久久国产综合色|国产精品| 日本在线不卡一区| 国产精品电影一区二区三区| 91精品久久久久久蜜臀| av网站免费线看精品| 美女脱光内衣内裤视频久久网站 | 久久综合久久综合久久综合| 不卡av在线网| 激情六月婷婷久久| 亚洲精品国产品国语在线app| 久久久激情视频| 欧美午夜精品理论片a级按摩| 国产成人精品免费看| 三级欧美在线一区| 国产精品国产三级国产| 2022国产精品视频| 在线成人高清不卡| 91成人在线免费观看| 国产91色综合久久免费分享| 美女一区二区视频| 成人永久看片免费视频天堂| 麻豆成人综合网| 亚洲电影视频在线| 成人欧美一区二区三区视频网页| 精品国产免费久久| 91精品国产色综合久久不卡蜜臀| 色综合一个色综合亚洲| 成人aaaa免费全部观看| 国产成人综合网| 激情国产一区二区| 另类调教123区 | 久久99九九99精品| 青娱乐精品在线视频| 亚洲图片欧美综合| 亚洲永久免费av| 亚洲永久精品国产| 亚洲香肠在线观看| 一卡二卡三卡日韩欧美| 自拍偷拍亚洲激情| 亚洲欧美一区二区三区极速播放 | 日韩一区二区精品葵司在线| 欧美日韩午夜影院| 欧美另类变人与禽xxxxx| 欧美在线免费观看亚洲| 日本高清成人免费播放| 91成人免费电影| 欧美中文字幕久久| 欧美区在线观看| 欧美精品免费视频| 欧美一级高清大全免费观看| 欧美一级黄色大片| 精品国产伦一区二区三区免费| 精品99一区二区| 欧美极品另类videosde| 中文字幕一区av| 尤物在线观看一区| 天天免费综合色| 精品中文字幕一区二区| 国产乱码精品一区二区三区五月婷| 国产一区二区看久久| 丁香天五香天堂综合| 91女厕偷拍女厕偷拍高清| 色屁屁一区二区| 欧美欧美欧美欧美首页| 欧美成人video| 国产欧美日韩综合精品一区二区| 国产精品久99| 亚洲大片免费看| 精品一区二区影视| 成人性色生活片免费看爆迷你毛片| 本田岬高潮一区二区三区| 欧美亚洲动漫精品| 欧美一区二区福利在线| 国产午夜一区二区三区| 亚洲欧美日韩小说| 麻豆精品久久久| 高清国产一区二区| 亚洲人一二三区| 亚洲国产精品久久久久秋霞影院| 日本欧洲一区二区| 成人免费高清视频| 欧美日韩高清一区二区不卡| 久久综合久久99| 亚洲精选视频免费看| 久久电影网站中文字幕| 99久久伊人精品| 日韩欧美国产不卡| 中文字幕视频一区| 久久不见久久见免费视频1| av不卡在线播放| 欧美成人vr18sexvr| 亚洲综合一区二区三区| 国模套图日韩精品一区二区| 99国产精品久久久久| 日韩女优视频免费观看| 亚洲一区免费观看| 国产伦精品一区二区三区免费迷 | 亚洲精品久久7777| 激情综合一区二区三区| 欧美专区在线观看一区| 欧美国产日韩亚洲一区| 免费三级欧美电影| 欧美综合天天夜夜久久| 国产精品乱人伦中文| 免费成人av在线播放| 日本高清视频一区二区| 欧美国产一区在线| 韩国视频一区二区| 欧美福利一区二区| 亚洲一区在线播放| 99久久免费国产| 国产日韩精品一区二区三区 | 亚洲免费在线视频| 国产成人精品一区二区三区四区| 91麻豆精品国产91久久久久久 | 亚洲午夜久久久久久久久电影院 | 亚洲精品综合在线| 成人午夜激情影院| 国产日产欧美一区二区视频| 久久国产精品99久久人人澡| 4438x成人网最大色成网站| 一区二区三区国产精华| 97精品久久久午夜一区二区三区| 国产性做久久久久久| 国产精品主播直播| 精品久久久久久久久久久久包黑料| 婷婷国产在线综合| 欧美视频在线观看一区| 一区二区三区精品视频| 99r国产精品| 亚洲女同女同女同女同女同69| 成人亚洲一区二区一| 国产精品区一区二区三| 国产成人在线免费观看| 欧美高清在线精品一区| 国产精品亚洲第一区在线暖暖韩国| 精品国产一区二区三区四区四| 美女视频黄 久久| 精品国产成人在线影院 | 欧美色精品在线视频| 亚洲午夜私人影院| 欧美区一区二区三区| 日韩国产欧美一区二区三区| 日韩一区二区三区电影 | 国产成人亚洲综合a∨婷婷| 国产日韩精品久久久| 成人午夜大片免费观看| 18涩涩午夜精品.www| 欧美这里有精品| 日韩国产精品91| xnxx国产精品| 成人免费av在线| 一区二区成人在线| 91精品国产一区二区三区| 久久精品国产999大香线蕉| 久久久久国产精品麻豆ai换脸| 成人小视频在线观看| 亚洲人成在线观看一区二区| 欧美日韩情趣电影| 久久精品国产**网站演员| 欧美极品aⅴ影院| 在线观看成人小视频| 日韩黄色片在线观看| 国产日韩精品一区| 欧美亚洲国产一区二区三区| 久久99精品国产麻豆婷婷| 国产精品国产三级国产三级人妇| 欧美色图在线观看|