kelpnet의 예법
켈프넷 방법을 찾아봤어요.
부속품
ロス - SoftmaxCrossEntropy MeanSquaredError
オプチマイザー - MomentumSGD SGD Adam AdaGrad
アクチベーション - Sigmoid ReLU TanhActivation
샘플 코드xor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using KelpNet;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
const int learningCount = 10000;
Real[][] trainData = {
new Real[] { 0, 0 },
new Real[] { 1, 0 },
new Real[] { 0, 1 },
new Real[] { 1, 1 }
};
Real[][] trainLabel = {
new Real[] { 0 },
new Real[] { 1 },
new Real[] { 1 },
new Real[] { 0 }
};
FunctionStack nn = new FunctionStack(new Linear(2, 2, name: "l1"), new TanhActivation(name: "act"), new Linear(2, 2, name: "l2"));
nn.SetOptimizer(new SGD());
Console.WriteLine("1 Training...");
for (int i = 0; i < learningCount; i++)
{
Real loss = 0;
for (int j = 0; j < trainData.Length; j++)
{
loss += Trainer.Train(nn, trainData[j], trainLabel[j], new SoftmaxCrossEntropy());
}
if (i % 1000 == 0)
{
Console.WriteLine("loss: " + loss / 4);
}
}
Console.WriteLine("Test Start...");
foreach (Real[] input in trainData)
{
NdArray result = nn.Predict(input)[0];
int resultIndex = Array.IndexOf(result.Data, result.Data.Max());
Console.WriteLine(input[0] + " xor " + input[1] + " = " + resultIndex + " " + result);
}
ModelIO.Save(nn, "test.nn");
Function testnn = ModelIO.Load("test.nn");
Console.WriteLine("Test Start...");
foreach (Real[] input in trainData)
{
NdArray result = testnn.Predict(input)[0];
int resultIndex = Array.IndexOf(result.Data, result.Data.Max());
Console.WriteLine(input[0] + " xor " + input[1] + " = " + resultIndex + " " + result);
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
결실이상.
Reference
이 문제에 관하여(kelpnet의 예법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohisama@github/items/6754967d2e2549fa4896텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)