C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: C言語の質問です。ポップフィールドネットワークです


(過去ログ 101 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■60460 / inTopicNo.1)  C言語の質問です。ポップフィールドネットワークです
  
□投稿者/ 草野 優雨 (1回)-(2011/07/05(Tue) 09:10:21)

分類:[.NET 全般] 

ポップフィールドネットワークです
/*この部分を自分で書く*/等の部分を埋めてください。
条件1 ニューロン数は400 とする。
条件2 扱うデータはすべてバイポーラ型(&#161;1; 1) とする。
条件3 学習は相関学習を用いる。
条件4 crow, duck, lion, monkey, mouse, penguin の6 つのパターンを記憶させる。
条件5 実行時の引数として入力パターンとノイズを付加する確率を指定できるようにする。(例え
ば./a.out 1 10 でパターン1 にノイズを10% 付加したパターンを入力する)
条件6 実行結果はkterm 上で■ や□ を使って表示する。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <limits.h>
#define PatternNo 6
#define DataWidth 20
#define DataHeight 20
#define UnitNo DataWidth*DataHeight
#define TimeMax 2
void init_rnd(){
srand((unsigned int)time(NULL));
}

double Random(){
return((double)rand()/RAND_MAX);
}

int StepFunc(int net, int pout){

/*この部分を自分で書く */

}

void display_pattern(int out[UnitNo]){
int i;

/*この部分を自分で書く*/

}
void read_pattern(int PatternID, char *fname,
int pattern[PatternNo][UnitNo]){
int i;
FILE *fp;

if((fp=fopen(fname,"r"))==NULL){
printf("read_pattern(): Cannot open \"%s\"\n",fname);
exit(1);
}
for(i=0;i<UnitNo;i++){
fscanf(fp,"%d",&pattern[PatternID][i]);
}
fclose(fp);
}
void read_patterns(int pattern[PatternNo][UnitNo]){
read_pattern(0,"crow", pattern);
read_pattern(1,"duck", pattern);
read_pattern(2,"lion", pattern);
read_pattern(3,"monkey", pattern);
read_pattern(4,"mouse", pattern);
read_pattern(5,"penguin",pattern);
}
void learn_w(int pattern[PatternNo][UnitNo], int w[UnitNo][UnitNo]){
int p,i,j;
/*この部分を自分で書く*/
}
void input_pattern(int PatternID, int pattern[PatternNo][UnitNo],
int input[UnitNo], double NoiseLevel){
int i,j;
/*この部分を自分で書く*/
}
void calc_output(int w[UnitNo][UnitNo], int out[UnitNo]){
int i,j;
int net;
for(i=0;i<UnitNo;i++){
/* この部分を自分で書く */
display_pattern(out);
}
}
int main(int argc, char *argv[]){
int pattern[PatternNo][UnitNo];
int w[UnitNo][UnitNo];
int out[UnitNo];
int PatternID;
double NoiseLevel;
int t;
if(argc!=3){
printf("プログラムの使用方法 : \n");
printf(" ./a.out 入力するパターンの番号(0〜5) ノイズレベル(0〜100)\n");
exit(1);
}
PatternID = atoi(argv[1]);
NoiseLevel = atof(argv[2])/100.0;
init_rnd();
read_patterns(pattern);
learn_w(pattern,w);

input_pattern(PatternID,pattern,out,NoiseLevel);
display_pattern(out);
for(t=0;t<TimeMax;t++){
calc_output(w,out);
}
return 0;
}

C言語です
この順に作っていくとわかりやすいらしいです。
1. パターンの表示display pattern( )
2. 相関学習learn w( )
3. パターンの入力input pattern( )
4. 出力関数StepFunc( )
5. 想起calc output( )
できればわかるところだけでものせてください!
引用返信 編集キー/
■60463 / inTopicNo.2)  Re[1]: C言語の質問です。ポップフィールドネットワークです
□投稿者/ 774RR (598回)-(2011/07/05(Tue) 09:25:19)
まあ、なんにせよ宿題/課題は自分でやろうな。

自分で少しは解いてみて、それでもわからないところがあったら、
その部分だけフォローするってのはありだと思うが
丸投げならばお断り。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -