我目前正在开展一个项目,我使用ENcog(.net)对emg信号进行分类,功能已经被提取出来,当我尝试训练时,它会像标题所说的那样出错。 这是我使用的代码:
BasicNetwork JST = new BasicNetwork();
JST.AddLayer(new BasicLayer(7));
JST.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 10));
JST.AddLayer(new BasicLayer(new ActivationLinear(), true, 4));
JST.Structure.FinalizeStructure();
JST.Reset();
openFileDialog1.Title = "Open Feature File...";
openFileDialog1.FileName = "";
openFileDialog1.Filter = "CSV (comma delimited)|*.csv|All Files|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
{
MessageBox.Show("Choice Cancelled");
}
else
{
IVersatileDataSource data = new CSVDataSource(openFileDialog1.FileName, false, CSVFormat.DecimalComma);
var InputJST = new VersatileMLDataSet(data);
InputJST.DefineSourceColumn("MAV", 0, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
InputJST.DefineSourceColumn("RMS", 1, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
InputJST.DefineSourceColumn("VAR", 2, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
InputJST.DefineSourceColumn("SD", 3, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
InputJST.DefineSourceColumn("WL", 4, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
InputJST.DefineSourceColumn("ZC", 5, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
InputJST.DefineSourceColumn("SSC", 6, Encog.ML.Data.Versatile.Columns.ColumnType.Continuous);
ColumnDefinition outputColumn = InputJST.DefineSourceColumn("Arrow", 7, ColumnType.Nominal);
InputJST.DefineSingleOutputOthersInput(outputColumn);
InputJST.Analyze();
var model = new EncogModel(InputJST);
model.SelectMethod(InputJST, MLMethodFactory.TypeFeedforward);
InputJST.Normalize();
var train = new LevenbergMarquardtTraining(JST, InputJST);
我的问题是为什么数据集的Inputsize和idealsize为0,尽管计算出的大小是正确的?
感谢。
答案 0 :(得分:0)
在对代码进行嗡嗡声之后,我确实得到了解决方案,只需将规范化数据集保存到csv中,然后使用csvmldataset重新加载它。
如果每个人都想知道为什么不使用csv规范化器,因为结果是不希望的(等边)。
PS:任何有其他解决方案的人仍然感到沮丧,谢谢。