- Я загрузил библиотеку нейронной сети OLSOFT с вашего веб-сайта.
- Я преобразовал часть «Пример SOFM (VB. NET)» в «NN_LIB_COM6.chm» в C# коды.
- Я запустил Register.bat
- Я сделал "Обзор" в "NN_LIB_COM6.chm". => regsvr32.exe "путь и имя файла к файлу DLL библиотеки"
- Все процессы выполнены успешно.
- Я создал новое консольное приложение в Visual Studio 2019, добавил .dll в список ссылок и запустил коды.
- Я получил некоторую ошибку, как показано ниже. Я не могу найти решение в inte rnet. В кодах есть серийник.
- Вкратце, я хочу запустить нейронную сеть с кодами C#, как в надстройке Excel.
изображение ошибки
static void Main(string[] args)
{
// countries list. Countries and their characteristics.
object[,] countries = new object[,] {
{ "Algeria", 3.9, 31193917, 1.74, 2381740, 0, 5550 },
{ "Argentina", -3, 36955182, 1.16, 2736690, 30200, 17000 },
{ "Australia", 4.3, 19169083, 1.02, 7617930, 68920, 21070 },
{ "Brazil", 0.8, 172860370, 0.94, 8456510, 55455, 28000 },
{ "Canada", 3.6, 31281092, 1.02, 9220970, 755170, 7100 },
{ "China", 7, 1261832482, 0.9, 9326410, 270550, 498720 },
{ "India", 5.5, 1014003817, 1.58, 2973190, 314400, 480000 },
{ "Indonesia", 0, 224784210, 1.63, 1826440, 93000, 45970 },
{ "Iran", 1, 65619636, 0.83, 1636000, 12000, 94000 },
{ "Kazakhstan", 1.7, 16733227, -0.05, 2669800, 47500, 22000 },
{ "Libya", 2, 5115450, 2.42, 1759540, 0, 4700 },
{ "Mexico", 3.7, 100349766, 1.53, 1923040, 49510, 61000 },
{ "Mongolia", 3.5, 2650952, 1.54, 1565000, 0, 800 },
{ "Niger", 2, 10075511, 2.75, 1266700, 300, 660 },
{ "Peru", 2.4, 27012899, 1.75, 1280000, 5220, 12800 },
{ "Russia", 3.2, 146001176, -0.38, 16995800, 79400, 40000 },
{ "Saudi Arabia", 1.6, 22023506, 3.28, 1960582, 0, 4350 },
{ "Sudan", 3, 35079814, 2.84, 2376000, 129810, 19460 },
{ "United States", 4.1, 275562673, 0.91, 9158960, 470131, 207000 } };
// create new NNLib object
NN_LIB_COM6Lib.NeuralNetwork nn = new NN_LIB_COM6Lib.NeuralNetwork();
string serial = "NNAHI-99XB5-RZOTR-FRFTN-DPBX5";
try
{
// network layout definition. 1 layer, 6 inputs, 3 outputs, Exponent activation function.
int[] LayerNeuronsCount = new int[] { 3 };
nn.CreateNetworkEx(serial, 1, 6, LayerNeuronsCount, 0.5, 3);
// initialize synapses with Convex Combination method
nn.InitSynapsesConvex();
// set learning parameters
nn.SetNju(0.1);
nn.SetLearnRadius(2);
// show network layout on Console
Console.WriteLine(nn.ExportSynapses());
}
catch (Exception e2)
{
nn.DeleteNetwork();
nn = null/* TODO Change to default(_) if this is not a reference type */;
Console.WriteLine("Exception: " + e2.Message);
return;
}
// Iterate 300 times (epoches)
for (int cnt = 0; cnt <= 300; cnt++)
{
for (int i = countries.GetLowerBound(0); i <= countries.GetUpperBound(0); i++)
{
// prepare input values array
double[] InputValues = new double[] {
(double)countries[i, 1],
(double)countries[i, 2],
(double)countries[i, 3],
(double)countries[i, 4],
(double)countries[i, 5],
(double)countries[i, 6] };
// set learning parameters. They can vary during learning process.
// nn.SetLearnRadius(CInt(3 * ((300 - cnt) / 350)))
// nn.SetLearnRate(0.6 * ((300 - cnt) / 300))
nn.SetLearnRadius(1);
nn.SetLearnRate(0.6);
// set input values for SOFM
nn.SetInputValues(InputValues);
// alternate variant that uses Convex Combination method.
// nn.SetInputValuesConvex(InputValues, (cnt * countries.Length + i) / (101 * countries.Length))
// additional modifications can be applied to input values and synapsys
// nn.NormalizeInputValues()
// nn.NormalizeSynapsys()
// propagate input values and learn SOFM
nn.PropagateSOFM();
nn.LearnSOFM();
}
}
// show trained network layout on Console
Console.WriteLine(nn.ExportSynapses());
// now we can classify countries list. This procedure is the same as above except we do not
// call LearnSOFM() but instead call GetClosestNeuron() to obtain classified cluster number
for (int i = countries.GetLowerBound(0); i <= countries.GetUpperBound(0); i++)
{
double[] InputValues = new double[] {
(double)countries[i, 1],
(double)countries[i, 2],
(double)countries[i, 3],
(double)countries[i, 4],
(double)countries[i, 5],
(double)countries[i, 6] };
nn.SetInputValues(InputValues);
nn.PropagateSOFM();
Console.WriteLine(countries[i, 0] + " - " + nn.GetClosestNeuron());
}
// delete network after use
nn.DeleteNetwork();
// delete NNLib object
nn = null/* TODO Change to default(_) if this is not a reference type */;
}