현재 개와 고양이의 차이점을 알 수있는 CNN에서 작업하고 있습니다. 이것은 내가 지금까지 밖으로 일한 코드 :이 이미지를로드하는 현명한 방법이 될하지 않을 수 있습니다 알고Input 및 Ideal Double 2D 배열을 사용하여 BasicMLDataSet을 초기화 할 때 NullPointer 예외가 발생했습니다.
public bool trained = false;
public BasicNetwork network;
public Form1()
{
InitializeComponent();
}
[..]
private void trainNN()
{
double[][] input = LoadImages();
double[][] ideal = LoadIdeal();
var trainingSet = new BasicMLDataSet(input, ideal);
var train = new ResilientPropagation(network, trainingSet);
network = CreateNetwork();
}
private double[][] LoadImages()
{
status.Text = "Loading images...";
String[] dogimgs = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\dog_img\\", "*", SearchOption.TopDirectoryOnly);
String[] catimgs = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\cat_img\\", "*", SearchOption.TopDirectoryOnly);
int dogimgscount = dogimgs.Length;
int catimgscount = catimgs.Length;
int totalimgscount = dogimgscount + catimgscount;
double[][] images = new double[totalimgscount][];
for (int dogloop = 0; dogloop < dogimgscount; dogloop++)
{
status.Text = "Loading images... [" + (dogloop + 1) + "/" + totalimgscount + "]";
images[dogloop] = Image2Matrix(new Bitmap(dogimgs[dogloop]));
}
for (int catloop = 0; catloop < catimgscount; catloop++)
{
status.Text = "Loading images... [" + (catloop + dogimgscount) + "/" + totalimgscount + "]";
images[catloop + dogimgscount - 1] = Image2Matrix(new Bitmap(catimgs[catloop]));
}
status.Text = "Images loaded.";
return images;
}
private double[][] LoadIdeal()
{
String[] dogimgs = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\dog_img\\", "*", SearchOption.TopDirectoryOnly);
String[] catimgs = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\cat_img\\", "*", SearchOption.TopDirectoryOnly);
int dogimgscount = dogimgs.Length;
int catimgscount = catimgs.Length;
int totalimgscount = dogimgscount + catimgscount;
double[][] ideal = new double[totalimgscount][];
for (int dogloop = 0; dogloop < dogimgscount; dogloop++)
{
ideal[dogloop] = new[] { 0.0, 1.0 };
}
for (int catloop = 0; catloop < catimgscount; catloop++)
{
ideal[catloop + dogimgscount - 1] = new[] { 1.0, 0.0 };
}
return ideal;
}
,하지만 난 그냥 성능을 강화 시작하기 전에 개념 작품을보고 싶어요. 내 문제는 다음과 같습니다. dog_img에 2 개, cat_img에 2 개, 이미지를 두 개 넣으면 프로그램에서 이미지를 잘로드하고 입력과 이상적인 배열의 길이가 모두 4이고 두 개 모두 double 값으로 채워집니다. 하지만 줄에
var trainingSet = new BasicMLDataSet (입력, 이상적);
프로그램에서 NullPointerException 오류가 발생합니다. 두 배열은 모두 명확하게 초기화되고 null 또는 비어 있지 않지만 여전히 오류가 발생합니다. 어떤 도움을 주셔서 감사합니다. 고맙습니다. FritzFurtz