Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
C言語からVB変換
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10598#CommentId22214
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
マジェ
 (学生)
投稿日時
2011/11/30 17:58:45
返答有難うございます。
サンプルコードの環境はC言語ではなく、Microsoft Visual C++ .NET でした。
この言語は勉強していないこともあり、すいませんけどあまり分かりません。
サンプルコードの一部を貼り付けさせて頂きますので、ご協力お願いします。
#ifndef __MLP_H__
#define __MLP_H__
#include "Sample.h"
#include "Matrix.h"
#include "Numeric.h"
using namespace std;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<double> vd;
typedef Matrix<double> md;
class Mlp
{
public:
vi size;
vb act;
double eta;
double theta;
vd u[3];
vd x[3];
vd d[3];
md w[2];
double err;
public:
Mlp& Init(MlpParam& mp);
void New(istream& is);
void Read(istream& is);
void Write(ostream& os);
void Prop(const vd& in);
double& Err(const vd& tar);
void BackProp(const vd& tar);
void RenewWgt(void);
void BackPropDlt(const vd& dlt);
void RndWgt(void);
void Print(ostream& os);
};
//MLPの設定パラメータのクラス/////////////////////////////////
MlpParam::MlpParam(const MlpParam& mp)
{
size = mp.size;
act = mp.act;
eta = mp.eta;
theta = mp.theta;
}
MlpParam& MlpParam::operator =(const MlpParam& mp)
{
size = mp.size;
act = mp.act;
eta = mp.eta;
theta = mp.theta;
return *this;
}
Mlp& Mlp::Init(MlpParam& mp)
{
for(int i=0; i<3; i++) size.push_back(mp.size[i]);
for(int i=0; i<3; i++) act.push_back(mp.act[i]);
eta = mp.eta;
theta = mp.theta;
if(act[0]!=1) act[0]=0; // 入力層の出力関数は線形にセットされます.
//陰変数
for(int l=0; l<3; l++){
for(int i=0; i<size[l]; i++){
u[l].push_back(0);
x[l].push_back(0);
d[l].push_back(0);
}
}
err = 0;
for(int l=0; l<2; l++) w[l].Init(size[l+1], size[l]+1);
RndWgt();
return *this;
}
void Mlp::New(istream& is)
{
MlpParam mp;
for(int i=0; i<3; i++){int buf; is >> buf; mp.size.push_back(buf);}
for(int i=0; i<3; i++){bool buf; is >> buf; mp.act.push_back(buf);}
is.precision(10);
is >> scientific >> mp.eta;
is >> scientific >> mp.theta;
Init(mp);
}
void Mlp::Read(istream& is)
{
New(is);
for(int l=0; l<2; l++) is >> w[l];
}
大変長くなり申し訳ございません。