kelpnet의 작법 7
개요
나는 켈프넷의 방법을 조사했다.
선로를 추적해 보세요.
공부를 해보다.
결과
예제 코드 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using KelpNet;
using System.IO;
namespace ConsoleApp4
{
class Program
{
const int EPOCH = 3001;
static void Main(string[] args)
{
int N = 2000;
Real[][] trainData = new Real[N][];
Real[][] trainLabel = new Real[N][];
int[] Label = new int[N];
int i = 0;
Console.WriteLine("Read Start...");
using (StreamReader sr = new StreamReader(@"test.csv"))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] items = line.Split(',');
trainData[i] = new Real[] {
double.Parse(items[0]),
double.Parse(items[1]),
double.Parse(items[2]),
double.Parse(items[3]),
double.Parse(items[4])
};
trainLabel[i] = new Real[] {
int.Parse(items[5])
};
Label[i] = int.Parse(items[5]);
i++;
}
}
N = i;
FunctionStack nn = new FunctionStack(new Linear(5, 20, name: "in"), new Sigmoid(name: "act"), new Linear(20, 3, name: "out"));
nn.SetOptimizer(new SGD());
Console.WriteLine("Train Start...");
for (i = 0; i < EPOCH; i++)
{
Real loss = 0;
for (int j = 0; j < N; j++)
{
loss += Trainer.Train(nn, trainData[j], trainLabel[j], new SoftmaxCrossEntropy());
}
if (i % 100 == 0)
{
Console.WriteLine("loss:" + loss / N);
}
}
Console.WriteLine("Save Start...");
ModelIO.Save(nn, "test.nn");
Console.WriteLine("Load Start...");
Function testnn = ModelIO.Load("test.nn");
Console.WriteLine("Test Start...");
float ac = 0;
for (int j = 0; j < N; j++)
{
NdArray result = testnn.Predict(trainData[j])[0];
int resultIndex = Array.IndexOf(result.Data, result.Data.Max());
if (resultIndex == Label[j]) ac++;
}
Console.Write("正解率 ");
Console.WriteLine(ac / N * 100);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
이상
Reference
이 문제에 관하여(kelpnet의 작법 7), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/8821c9daf523545cfd7f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
예제 코드 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using KelpNet;
using System.IO;
namespace ConsoleApp4
{
class Program
{
const int EPOCH = 3001;
static void Main(string[] args)
{
int N = 2000;
Real[][] trainData = new Real[N][];
Real[][] trainLabel = new Real[N][];
int[] Label = new int[N];
int i = 0;
Console.WriteLine("Read Start...");
using (StreamReader sr = new StreamReader(@"test.csv"))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] items = line.Split(',');
trainData[i] = new Real[] {
double.Parse(items[0]),
double.Parse(items[1]),
double.Parse(items[2]),
double.Parse(items[3]),
double.Parse(items[4])
};
trainLabel[i] = new Real[] {
int.Parse(items[5])
};
Label[i] = int.Parse(items[5]);
i++;
}
}
N = i;
FunctionStack nn = new FunctionStack(new Linear(5, 20, name: "in"), new Sigmoid(name: "act"), new Linear(20, 3, name: "out"));
nn.SetOptimizer(new SGD());
Console.WriteLine("Train Start...");
for (i = 0; i < EPOCH; i++)
{
Real loss = 0;
for (int j = 0; j < N; j++)
{
loss += Trainer.Train(nn, trainData[j], trainLabel[j], new SoftmaxCrossEntropy());
}
if (i % 100 == 0)
{
Console.WriteLine("loss:" + loss / N);
}
}
Console.WriteLine("Save Start...");
ModelIO.Save(nn, "test.nn");
Console.WriteLine("Load Start...");
Function testnn = ModelIO.Load("test.nn");
Console.WriteLine("Test Start...");
float ac = 0;
for (int j = 0; j < N; j++)
{
NdArray result = testnn.Predict(trainData[j])[0];
int resultIndex = Array.IndexOf(result.Data, result.Data.Max());
if (resultIndex == Label[j]) ac++;
}
Console.Write("正解率 ");
Console.WriteLine(ac / N * 100);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
이상
Reference
이 문제에 관하여(kelpnet의 작법 7), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/8821c9daf523545cfd7f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using KelpNet;
using System.IO;
namespace ConsoleApp4
{
class Program
{
const int EPOCH = 3001;
static void Main(string[] args)
{
int N = 2000;
Real[][] trainData = new Real[N][];
Real[][] trainLabel = new Real[N][];
int[] Label = new int[N];
int i = 0;
Console.WriteLine("Read Start...");
using (StreamReader sr = new StreamReader(@"test.csv"))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] items = line.Split(',');
trainData[i] = new Real[] {
double.Parse(items[0]),
double.Parse(items[1]),
double.Parse(items[2]),
double.Parse(items[3]),
double.Parse(items[4])
};
trainLabel[i] = new Real[] {
int.Parse(items[5])
};
Label[i] = int.Parse(items[5]);
i++;
}
}
N = i;
FunctionStack nn = new FunctionStack(new Linear(5, 20, name: "in"), new Sigmoid(name: "act"), new Linear(20, 3, name: "out"));
nn.SetOptimizer(new SGD());
Console.WriteLine("Train Start...");
for (i = 0; i < EPOCH; i++)
{
Real loss = 0;
for (int j = 0; j < N; j++)
{
loss += Trainer.Train(nn, trainData[j], trainLabel[j], new SoftmaxCrossEntropy());
}
if (i % 100 == 0)
{
Console.WriteLine("loss:" + loss / N);
}
}
Console.WriteLine("Save Start...");
ModelIO.Save(nn, "test.nn");
Console.WriteLine("Load Start...");
Function testnn = ModelIO.Load("test.nn");
Console.WriteLine("Test Start...");
float ac = 0;
for (int j = 0; j < N; j++)
{
NdArray result = testnn.Predict(trainData[j])[0];
int resultIndex = Array.IndexOf(result.Data, result.Data.Max());
if (resultIndex == Label[j]) ac++;
}
Console.Write("正解率 ");
Console.WriteLine(ac / N * 100);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
Reference
이 문제에 관하여(kelpnet의 작법 7), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohisama@github/items/8821c9daf523545cfd7f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)