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

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

?? procedure.cpp

?? 該軟件為BP網(wǎng)絡(luò)的仿真軟件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/////////////////////////////////////////////////////////////////////////////
// Procedure.cpp
//		the implementation of the specified arithmetic
// Author : freeia
// E-mail : freeia@163.com
// Date : 3/20/2003
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Matrix.h"
#include "AllDef.h"



/////////////////////////////////////////////////////////////////////////////
//	Levenberg-Marquart		---->	第一次前向計算初始化				   //
/////////////////////////////////////////////////////////////////////////////
__declspec (dllexport) void LMForwardCalculateInit( int nInputLayerNumber,
													int nHideLayerNumber,
													int nOutputLayerNumber,
													CMatrix &matrixDemoDataInput,
													CMatrix &matrixInputLayerValue,
													CMatrix &matrixInputToHideWeightValue,
													CMatrix &matrixHideLayerValveValue,
													CMatrix &matrixHideToOutputWeightValue,
													CMatrix &matrixOutputLayerValveValue
												   )
{

	/************************************************************************
	*					--------->Use Matlab Method <---------              *
	************************************************************************/

		
	/////////////////////////////////////////////////////////////////////////
	// 構(gòu)造輸入層元素的矩陣
	// 構(gòu)造規(guī)則:
	//		1. 樣本數(shù)目做為矩陣的行數(shù);
	//		2. 單個樣本的輸入層的數(shù)目做為矩陣的列數(shù);
	//		3. 矩陣中的元素即為對應(yīng)的輸入層的值
	//

	CMatrix cMatrixInputLayerValue(matrixDemoDataInput.GetMatrixRowNumber (), nInputLayerNumber);

	// 得到樣本的輸入值
	matrixDemoDataInput.CopySubMatrix (cMatrixInputLayerValue,(unsigned int)0,(unsigned int)0);

	CMatrix cMatrixTInputLayerValue = cMatrixInputLayerValue.Transpose ();

	matrixInputLayerValue.CopyMatrix (cMatrixTInputLayerValue);


	/////////////////////////////////////////////////////////////////////////
	// 構(gòu)造權(quán)值矩陣 -----> 由單個樣本輸入層與隱含層之間的權(quán)值做為元素組成
	// 構(gòu)造規(guī)則:
	//		1. 單個樣本的輸入層的數(shù)目做為矩陣行數(shù);
	//		2. 單個樣本的隱含層的數(shù)目做為矩陣的列數(shù);
	//		3. 對矩陣中的元素進行隨機初始化,值在(-1,1)之間;
	//		4. 所有樣本的輸入層和隱含層的數(shù)目是相等的;
	//		5. 所有樣本使用的是同一個權(quán)值矩陣.
	//

	CMatrix	cMatrixInputToHideWeightValue(nHideLayerNumber, nInputLayerNumber);

	// 隨機初始化矩陣內(nèi)元素的值
	cMatrixInputToHideWeightValue.RandomInitialize ();

	matrixInputToHideWeightValue.CopyMatrix (cMatrixInputToHideWeightValue);


	/////////////////////////////////////////////////////////////////////
	//	構(gòu)造樣本隱含層的閥值矩陣
	//	構(gòu)造規(guī)則:
	//		1. 樣本的數(shù)目做為矩陣行數(shù);
	//		2. 單個樣本的隱含層的數(shù)目做為矩陣的列數(shù);
	//		3. 隨機初始化矩陣中的元素,使值在(-1,1)之間;
	//		4. 矩陣中每行的數(shù)據(jù)都和第一行數(shù)據(jù)相對應(yīng)的位置相等.
	//

	CMatrix cMatrixHideLayerValveValue(nHideLayerNumber,(unsigned int)1);

	// 隨機初始化矩陣內(nèi)元素的值
	cMatrixHideLayerValveValue.RandomInitialize ();

	matrixHideLayerValveValue.CopyMatrix(cMatrixHideLayerValveValue);


	/////////////////////////////////////////////////////////////////////
	//	構(gòu)造權(quán)值矩陣	----->	由單個樣本的隱含層與輸出層之間權(quán)值做為元素
	//							組成
	//	構(gòu)造規(guī)則:
	//		1. 單個樣本的隱含層的數(shù)目做為矩陣的行數(shù);
	//		2. 單個樣本的輸出層的數(shù)目做為矩陣的列數(shù);
	//		3. 對矩陣中的元素進行隨機初始化,值在(-1,1)之間;
	//		4. 所有樣本的隱含層和輸出層的數(shù)目是相等的;
	//		5. 所有樣本使用的是同一個權(quán)值矩陣.
	//

	CMatrix cMatrixHideToOutputWeightValue(nOutputLayerNumber, nHideLayerNumber);

	// 對矩陣的元素隨機初始化
	cMatrixHideToOutputWeightValue.RandomInitialize ();

	matrixHideToOutputWeightValue.CopyMatrix (cMatrixHideToOutputWeightValue);


	/////////////////////////////////////////////////////////////////////
	//	構(gòu)造樣本的輸出層的閥值矩陣
	//	構(gòu)造規(guī)則:
	//		1. 樣本的數(shù)目做為矩陣的行數(shù);
	//		2. 單個樣本的輸出層的數(shù)目做為矩陣的列數(shù);
	//		3. 隨機初始化矩陣中的元素,使值在(-1,1)之間;
	//		4. 矩陣中每行的數(shù)據(jù)都和第一行數(shù)據(jù)相對應(yīng)的位置相等.
	//

	CMatrix cMatrixOutputLayerValveValue(nOutputLayerNumber,(unsigned int)1);

	// 隨機初始化矩陣內(nèi)元素的值
	cMatrixOutputLayerValveValue.RandomInitialize ();

	matrixOutputLayerValveValue.CopyMatrix(cMatrixOutputLayerValveValue);


}

/////////////////////////////////////////////////////////////////////////////
//	Levenberg-Marquart		---->		前向計算						   //
/////////////////////////////////////////////////////////////////////////////
__declspec(dllexport) void LMForwardCalculate ( int nInputLayerNumber,
												int nHideLayerNumber,
												int nOutputLayerNumber,
												bool bSimulateDataFlag,
												int nComboFunc,
												CMatrix &matrixDemoDataInput,
												CMatrix &matrixInputLayerValue,
												CMatrix &matrixInputToHideWeightValue,
												CMatrix &matrixHideLayerValveValue,
												CMatrix &matrixHideLayerOutput,
												CMatrix &matrixHideToOutputWeightValue,
												CMatrix &matrixOutputLayerOutput,
												CMatrix &matrixOutputLayerValveValue
											   )
{

	if(bSimulateDataFlag)
	{

		CMatrix cMatrixInputLayerValue(matrixDemoDataInput.GetMatrixRowNumber (), nInputLayerNumber);

		// 得到樣本的輸入值
		matrixDemoDataInput.CopySubMatrix (cMatrixInputLayerValue, (unsigned int)0, (unsigned int)0);

		CMatrix cMatrixTInputLayerValue = cMatrixInputLayerValue.Transpose ();

		matrixInputLayerValue.CopyMatrix (cMatrixTInputLayerValue);


	}

	/////////////////////////////////////////////////////////////////////////
	// 得到所有樣本的隱含層的凈輸入
	// 構(gòu)造規(guī)則:
	//		1. 樣本的數(shù)目做為矩陣行數(shù);
	//		2. 單個樣本的隱含層的數(shù)目做為矩陣的列數(shù);
	//		3. 矩陣元素中的值即為對應(yīng)的樣本的隱含層的凈輸入:
	//		   由 
	//				cMatrixInputLayerValue * cMatrixInputToHideWeightValue 
	//				+ cMatrixHideLayerValveValue
	//			得到.
	//
		
	CMatrix cMatrixExHideLayerValveValue;
	cMatrixExHideLayerValveValue.nncpyi (matrixHideLayerValveValue, matrixDemoDataInput.GetMatrixRowNumber ());

	CMatrix cMatrixHideLayerPureInput(nHideLayerNumber, matrixDemoDataInput.GetMatrixRowNumber ());

	cMatrixHideLayerPureInput = matrixInputToHideWeightValue * matrixInputLayerValue;

	cMatrixHideLayerPureInput += cMatrixExHideLayerValveValue;


	/////////////////////////////////////////////////////////////////////
	//	算出所有樣本的隱含層的輸出
	//	構(gòu)造規(guī)則:
	//		1. 隱含層的輸出y與隱含層的輸入x的關(guān)系可用函數(shù)表示
	//			y = f(x)
	//		2. 矩陣的維數(shù)和隱含層的凈輸入矩陣的維數(shù)相等
	//

	CMatrix cMatrixHideLayerOutput(nHideLayerNumber, matrixDemoDataInput.GetMatrixRowNumber ());

	switch(nComboFunc)
	{
	case 0:
		cMatrixHideLayerOutput = cMatrixHideLayerPureInput.Sigmoid ();
		break;

	case 1:
		cMatrixHideLayerOutput = cMatrixHideLayerPureInput.tanh ();
		break;

	case 2:
		cMatrixHideLayerOutput = cMatrixHideLayerPureInput.Tansig();
		break;

	default:
		return;
	}
	
	matrixHideLayerOutput.CopyMatrix(cMatrixHideLayerOutput);

	/////////////////////////////////////////////////////////////////////
	//	得到所有樣本輸出層的凈輸入
	//	構(gòu)造規(guī)則;
	//		1. 樣本的數(shù)目做為矩陣的行數(shù);
	//		2. 單個樣本的輸出層的數(shù)目做為矩陣的列數(shù);
	//		3. 矩陣中元素的值即為對應(yīng)樣本的輸出層的凈輸入:
	//			由
	//				cMatrixHideLayerOutput * cMatrixHideToOutputWeightValue
	//				+ cMatrixOutputLayerValveValue
	//			得到
	//

	CMatrix cMatrixExOutputLayerValveValue;
	cMatrixExOutputLayerValveValue.nncpyi (matrixOutputLayerValveValue, matrixDemoDataInput.GetMatrixRowNumber ());

	CMatrix cMatrixOutputLayerPureInput(nOutputLayerNumber, matrixDemoDataInput.GetMatrixRowNumber ());

	cMatrixOutputLayerPureInput = matrixHideToOutputWeightValue * cMatrixHideLayerOutput;
	cMatrixOutputLayerPureInput  += cMatrixExOutputLayerValveValue;


	/////////////////////////////////////////////////////////////////////
	//	算出所有樣本的輸出層的輸出
	//	構(gòu)造規(guī)則:
	//		1. 矩陣的維數(shù)與得到的所有樣本的輸出層的凈輸入組成的矩陣一樣;
	//		2. 輸出層的輸出y和輸出層的輸入可用關(guān)系式
	//			y = f(x)
	//		表示
	//

	CMatrix cMatrixOutputLayerOutput(nOutputLayerNumber, matrixDemoDataInput.GetMatrixRowNumber ());

	switch(nComboFunc)
	{
	case 0:
		cMatrixOutputLayerOutput = cMatrixOutputLayerPureInput.Sigmoid ();
		break;

	case 1:
		cMatrixOutputLayerOutput = cMatrixOutputLayerPureInput.tanh ();
		break;

	case 2:
		cMatrixOutputLayerOutput = cMatrixOutputLayerPureInput.Tansig ();
		break;

	default:
		return ;
	}

	matrixOutputLayerOutput.CopyMatrix(cMatrixOutputLayerOutput);

}


/////////////////////////////////////////////////////////////////////////////
//	Levenberg-Marquart		---->		反饋計算						   //
/////////////////////////////////////////////////////////////////////////////
__declspec(dllexport) bool LMDemoDataTrainRepeat (	int nInputLayerNumber,
													int nHideLayerNumber,
													int nOutputLayerNumber,
													bool bSimulateDataFlag,
													int nComboFunc,
													double nSystemErrorOld,
													double nSystemErrorNew,
													double nSystemErrorLevel,
													double nSystemError,
													double nStep,
													UINT nMaxTrainTimes,
													UINT nTrainTimes,
													DWORD ID_SYSTEM_ERROR,
													DWORD ID_TRAIN_TIMES,
													HWND  hWnd,
													CMatrix &matrixDemoDataInput,
													CMatrix &matrixInputLayerValue,
													CMatrix &matrixInputToHideWeightValue,
													CMatrix &matrixHideLayerValveValue,
													CMatrix &matrixHideLayerOutput,
													CMatrix &matrixHideToOutputWeightValue,
													CMatrix &matrixOutputLayerOutput,
													CMatrix &matrixOutputLayerValveValue
												 )
{

	LMForwardCalculate (nInputLayerNumber,
						nHideLayerNumber,
						nOutputLayerNumber,
						bSimulateDataFlag,
						nComboFunc,
						matrixDemoDataInput,
						matrixInputLayerValue,
						matrixInputToHideWeightValue,
						matrixHideLayerValveValue,
						matrixHideLayerOutput,
						matrixHideToOutputWeightValue,
						matrixOutputLayerOutput,
						matrixOutputLayerValveValue
						);
		

	/////////////////////////////////////////////////////////////////////
	//	算出所有樣本的輸出層的delta矩陣
	//	構(gòu)造規(guī)則:
	//		1. 樣本的數(shù)目為矩陣的行數(shù);
	//		2. 樣本輸出層的數(shù)目為矩陣的列數(shù);
	//		3. 矩陣中的元素的值y為:
	//				y = -(前向計算出的輸出層的值 - 樣本的輸出層的值) * f'(net)
	//


	CMatrix cMatrixTDemoOutput(matrixDemoDataInput.GetMatrixRowNumber (), nOutputLayerNumber);
		
	// 得到樣本中輸出層的數(shù)據(jù)
	matrixDemoDataInput.CopySubMatrix (cMatrixTDemoOutput, (unsigned int)nInputLayerNumber, (unsigned int)0);

	CMatrix cMatrixDemoOutput = cMatrixTDemoOutput.Transpose ();

	// 得到樣本中輸出層的誤差
	CMatrix cMatrixOutputLayerError(nOutputLayerNumber, matrixDemoDataInput.GetMatrixRowNumber ());

	cMatrixOutputLayerError = cMatrixDemoOutput - matrixOutputLayerOutput;

		
	nSystemErrorOld = cMatrixOutputLayerError.GetSystemError ();

	for(int nLoopTimes=1; nLoopTimes < nMaxTrainTimes; nLoopTimes++)	
	{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费久久精品视频| 日韩一级免费观看| 91精品国产免费| 中文字幕一区二区三区在线不卡| 日本特黄久久久高潮| jvid福利写真一区二区三区| 日韩女优制服丝袜电影| 性做久久久久久免费观看欧美| 国产999精品久久久久久绿帽| 日韩一区二区视频| 亚洲一区二区欧美| 色哟哟一区二区在线观看| 久久九九国产精品| 久久99精品久久久久久久久久久久 | 亚洲国产aⅴ成人精品无吗| 国产91在线观看| 精品国产伦一区二区三区免费| 无码av免费一区二区三区试看 | 日本亚洲视频在线| 欧美日韩一级片在线观看| 亚洲精选视频免费看| 成人免费福利片| 国产日韩欧美精品一区| 韩国午夜理伦三级不卡影院| 欧美一二三区在线观看| 天堂久久一区二区三区| 欧美日本在线视频| 午夜成人免费视频| 欧美一区二区女人| 蜜桃久久精品一区二区| 日韩一区二区三区精品视频| 日韩—二三区免费观看av| 欧美一区二区福利在线| 成人免费视频一区| 久久色中文字幕| 紧缚奴在线一区二区三区| 欧美大片在线观看| 极品少妇一区二区三区精品视频| 精品裸体舞一区二区三区| 美脚の诱脚舐め脚责91| 久久欧美一区二区| 菠萝蜜视频在线观看一区| 最新日韩av在线| 欧美日韩久久久一区| 天堂成人免费av电影一区| 欧美成人一区二区| 国产成人综合在线| 亚洲欧美另类图片小说| 欧美精品乱码久久久久久| 老司机午夜精品99久久| 久久久精品国产免费观看同学| www.欧美日韩国产在线| 亚洲午夜精品网| 欧美xxxxx裸体时装秀| 福利电影一区二区| 一区二区三区日韩欧美| 日韩一区和二区| 波多野结衣中文字幕一区| 亚洲一区二区精品视频| 精品国产精品一区二区夜夜嗨| 粉嫩蜜臀av国产精品网站| 亚洲精品视频在线观看免费| 制服丝袜在线91| 国产91丝袜在线观看| 午夜精品久久久久久久99水蜜桃| 精品成人私密视频| 91网站视频在线观看| 秋霞电影网一区二区| 国产精品天美传媒沈樵| 欧美酷刑日本凌虐凌虐| 国产91在线看| 男人操女人的视频在线观看欧美| 国产精品国产成人国产三级| 欧美一区二区私人影院日本| 成人激情视频网站| 国内精品免费**视频| 亚洲一区二区av在线| 国产亚洲午夜高清国产拍精品| 欧美欧美午夜aⅴ在线观看| 成人免费av在线| 蜜臀久久99精品久久久久宅男 | 国产精品伦一区| 日韩一级二级三级| 欧美在线观看视频在线| 成人免费视频视频在线观看免费| 国产精品免费久久久久| www久久精品| 91亚洲精华国产精华精华液| 另类的小说在线视频另类成人小视频在线| 国产精品久久久久aaaa樱花| 久久久久久久综合色一本| 欧美精选一区二区| 日本高清不卡在线观看| 成人三级在线视频| 国产一区二区三区蝌蚪| 日韩激情一区二区| 午夜精品福利久久久| 一级女性全黄久久生活片免费| 国产欧美一区视频| 精品播放一区二区| 日韩欧美激情在线| 91精品福利在线一区二区三区 | 免费亚洲电影在线| 亚洲国产综合在线| 亚洲国产综合视频在线观看| 亚洲伦理在线免费看| 中文字幕一区在线观看视频| 中文子幕无线码一区tr| 国产免费成人在线视频| 久久精品亚洲精品国产欧美| 久久午夜老司机| 欧美经典一区二区| 国产欧美日韩不卡免费| 欧美国产一区在线| 中文字幕在线不卡一区| 亚洲精品久久嫩草网站秘色| 亚洲另类色综合网站| 一区二区三区四区av| 亚洲1区2区3区视频| 午夜日韩在线电影| 美女精品一区二区| 久久久久久97三级| 日韩成人免费电影| 亚洲成精国产精品女| 亚洲一区二区三区四区五区中文| 国产婷婷色一区二区三区| 91精品国产综合久久福利软件| 欧美一区二区三区白人| 久久影院视频免费| 精品少妇一区二区三区在线播放| 一本到不卡精品视频在线观看| 欧美日韩综合不卡| 国产精品久久久久久久岛一牛影视| 日本一区中文字幕| 在线欧美小视频| 国产精品免费aⅴ片在线观看| 蜜桃视频一区二区三区| 欧美在线制服丝袜| 中文欧美字幕免费| 国内精品写真在线观看| 欧美一区二区视频在线观看2022| 一区二区三区在线免费| 成人毛片视频在线观看| 日韩精品一区国产麻豆| 午夜视频在线观看一区二区| 成人黄色电影在线| 久久久精品人体av艺术| 美女任你摸久久| 91精品久久久久久蜜臀| 亚洲国产中文字幕| 欧美性生活久久| 亚洲在线成人精品| 欧美中文字幕一区二区三区| 欧美一区二区三区婷婷月色 | 日韩欧美国产午夜精品| 一区二区三区色| av在线综合网| 国产精品你懂的在线| 国产精品羞羞答答xxdd| 国产肉丝袜一区二区| 国产综合色精品一区二区三区| 精品日韩一区二区三区| 麻豆精品一二三| 欧美哺乳videos| 精品亚洲成a人| 久久综合九色综合欧美就去吻 | 中文字幕在线不卡| hitomi一区二区三区精品| 中文字幕 久热精品 视频在线| 国产91色综合久久免费分享| 国产亚洲1区2区3区| 丁香桃色午夜亚洲一区二区三区| 国产欧美一区二区三区网站 | 毛片一区二区三区| 欧美一级高清片| 狠狠色丁香婷婷综合| 久久久综合视频| 成人夜色视频网站在线观看| 天天影视网天天综合色在线播放 | 国精产品一区一区三区mba视频| 日韩一区二区免费电影| 激情亚洲综合在线| 国产婷婷一区二区| 99精品视频一区二区三区| 一区二区三区在线播| 欧美猛男gaygay网站| 麻豆精品国产传媒mv男同| 久久精品一区二区三区av| 99re热这里只有精品免费视频 | 欧美一区二区日韩| 国产一区二区中文字幕| 国产精品丝袜一区| 欧美中文字幕亚洲一区二区va在线| 亚洲成国产人片在线观看| 精品国产成人在线影院| 91在线一区二区三区| 蜜桃视频免费观看一区| 国产精品久线观看视频| 欧美日韩国产123区| 国产毛片精品视频|