ConvNetSharp - использование Dropout - PullRequest
       32

ConvNetSharp - использование Dropout

0 голосов
/ 15 сентября 2018

Я хотел бы попытаться добавить выпадающий слой в моей модели, но я получаю эту ошибку при Train метод:

Том должен иметь форму [1] для преобразования в System.Double

Что я сделал не так? Я также хотел бы знать, как «отключить» выпадающий слой , когда я не на тренировке (тестирование).

SgdTrainer trainer;
int numFeatures = 3;
Net<double> net = new Net<double>();
Volume<double> inputVolume, outputVolume;

trainer = new SgdTrainer(net) { LearningRate = 0.0001, BatchSize = 128 };

// 4 test cases with 3 features each    
double[] inputData = new double[12]  { 0, 1, 2,   3, 4, 5,   6, 7, 8,   6, 7, 8 };

// binary classification: 0,1 = is class; 1,0 = not class    
double[] outputData = new double[8]  { 0, 1,      1, 0,      0, 1,      1, 0 };

net.AddLayer(new InputLayer(1, 1, numFeatures));

net.AddLayer(new FullyConnLayer(10));
net.AddLayer(new ReluLayer());

net.AddLayer(new DropoutLayer(0.5)); // (ಠ_ಠ)

net.AddLayer(new FullyConnLayer(2));
net.AddLayer(new SoftmaxLayer(2));

inputVolume = BuilderInstance.Volume.From(inputData, new Shape(1, 1, numFeatures, inputData.Length / numFeatures));
outputVolume = BuilderInstance.Volume.From(outputData, new Shape(1, 1, 2, outputData.Length / 2));  

trainer.Train(inputVolume, outputVolume); // get error if there is dropout above

1 Ответ

0 голосов
/ 16 сентября 2018

Том должен иметь форму [1] для преобразования в System.Double

Эта ошибка произошла из-за ошибки, недавно введенной в ConvNetSharp. Это было исправлено в PR # 133

Я также хотел бы знать, как "отключить" слой отсева, когда я не на тренировке

Выпадающий слой знает, когда вы тренируетесь или оцениваете модель. Он будет сбрасывать и масштабировать входы при необходимости.

...