⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inference.cpp

📁 预测神经网络
💻 CPP
字号:
// Inference.cpp : implementation file
//

#include "stdafx.h"
#include "probp.h"
#include "Inference.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CInference property page

IMPLEMENT_DYNCREATE(CInference, CPropertyPage)

CInference::CInference() : CPropertyPage(CInference::IDD)
{
	//{{AFX_DATA_INIT(CInference)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	netExist=false;
	netConstruct=false;
	m_inferStr=_T("");

}

CInference::~CInference()
{
}

void CInference::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInference)
	DDX_Control(pDX, IDC_resLIST, m_resList);

	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInference, CPropertyPage)
	//{{AFX_MSG_MAP(CInference)
	ON_BN_CLICKED(IDC_openNet, OnopenNet)
	ON_BN_CLICKED(IDC_OpenSample, OnOpenSample)
	ON_BN_CLICKED(IDC_begin, OnbeginInference)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInference message handlers

void CInference::OnopenNet() 
{   m_Neural=new NeuralB;
    netExist=true;
		m_resList.SetColumnWidth(3000);
	ofstream defaultnet("default.bp");
	for(int i=0;i<100;i++)
		defaultnet<<"1"<<" ";
	defaultnet.close();
	CFileDialog dlg(TRUE,"bp","*.bp");
	if(dlg.DoModal()==IDOK)
	{CString temp;
		temp=dlg.GetPathName();
        lstrcpy(m_Neural->Net_Design.bpfilename,temp);
		
	}
	m_Neural->Net_Design.upload_network();
	m_Neural->establish_backprop_network();
	netConstruct=true;
m_Neural->hidenode[0]=m_Neural->Net_Design.hidenode[0];
m_Neural->hidenode[1]=m_Neural->Net_Design.hidenode[1];
}

void CInference::OnOpenSample() 
{
	if (!netExist) AfxMessageBox(_T("请先打开已学习的网络"));
else{
CFileDialog dlg(TRUE,"dat","*.dat");
if(dlg.DoModal()==IDOK)
{CString temp;
temp=dlg.GetPathName();
lstrcpy(m_Neural->Test_Data.filename,temp);
m_Neural->Test_Data.acquire_net_info(m_Neural->Net_Design.signal_dimensions,0);
m_Neural->Test_Data.request_testing_data();
m_Neural->Test_Data.netoutput=new float[m_Neural->Net_Design.nodes_in_output_layer];
m_Neural->Test_Data.targetoutput=new float[m_Neural->Net_Design.nodes_in_output_layer];

for(int sig = 0; sig < m_Neural->Test_Data.sample_number; sig++)
{//一个信号的signal_dimensions维
	
	for(int sigdim = 0; sigdim < m_Neural->Test_Data.signal_dimensions; sigdim++)
	{
		//信号的一维的hidenode[0]个隐层节点
		for(int hid1 = 0; hid1<m_Neural->hidenode[0]; hid1++)
		{ //一个隐层节点的sigdim
			float a=m_Neural->Test_Data.number_of_samples[sig].data_in_sample[sigdim];
			m_Neural->Net_Design.hidden_layer_number[0].node_in_hidden_layer[hid1].processing_unit_input[sigdim] =a;
		}
	}
}
}
}
	// TODO: Add your control notification handler code here
	
}

void CInference::OnbeginInference() 
{
	if (netConstruct) 
	{ 
	m_Neural->Test_Data.testsampleNum=0;
	while ((m_Neural->Test_Data.testsampleNum)<(m_Neural->Test_Data.sample_number))
	{m_Neural->test_neural_network();
	displayinference();
     m_Neural->Test_Data.testsampleNum++;
     
	}
}
else AfxMessageBox(_T("请先打开网络数据"));
}


void CInference::displayinference()
{

	
	CString tp;
	
	for(int dim=0;dim<m_Neural->Net_Design.signal_dimensions;dim++)
	{
		
		tp.Format("dim %d: %f",dim+1,m_Neural->Test_Data.number_of_samples[m_Neural->Test_Data.testsampleNum].data_in_sample[dim]);
		m_inferStr=m_inferStr+tp;

	}
	m_inferStr=m_inferStr+_T(" netout");
	for(dim=0;dim<m_Neural->Net_Design.nodes_in_output_layer;dim++)
	{
	tp.Format(" dim%d: %f ",dim+1,m_Neural->Test_Data.netoutput[dim]);

	m_inferStr=m_inferStr+tp;
	}
	m_resList.AddString(m_inferStr);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -