[mlpack] Training very simple neural networks

Marcus Edel marcus.edel at fu-berlin.de
Mon May 29 10:30:49 EDT 2017


Hello Kirill,

> After running this piece of code the predictedResponse matrix was the zero
> matrix (2x2) rather than something close to arma::mat("1 2; 3 4”). What did I do
> wrong?

Depending on the network and input the ReLU function might be problematic since
a large gradient could cause the weights to update in such a way that the
network units will never activate. In your case, the Identity function might be
a better solution or the sigmoid function if you are going for logistic
regression. Using the following:

arma::mat data("1 2");
arma::mat trainingResponses("1 2; 3 4");

FFN<MeanSquaredError<>> ffn;
ffn.Add<Linear<>>(1, 2);
ffn.Add<IdentityLayer<> >();

ffn.Train(data, trainingResponses);

arma::mat predictedResponses;
ffn.Predict(data, predictedResponses);

I get the following results:

1.2766   1.8192
2.9841   4.0109

which is close to what you would expect.

> I also have noticed that if I don’t add ReLULayer<>, than there is an error
> during training:
> 
>   unknown location:0: fatal error: in "CVTest/MSENNTest": signal: SIGABRT
>   (application abort requested)

This is a shortcoming that occurs for a single layer network, in this case we
can't store the activation in the upcomming layer.

I hope this is helpful, let me know if I can clarify anything further.

Thanks,
Marcus

> On 29. May 2017, at 15:42, Kirill Mishchenko <ki.mishchenko at gmail.com> wrote:
> 
> Hi!
> 
> I’m working on cross-validation module for mlpack, and for better code coverage in tests I want to check some functionality on neural networks. For that I need to train a very simple feedforward neural network that is able to remember responses for training data. I tried the following:
> 
>   arma::mat data("1 2");
>   arma::mat trainingResponses("1 2; 3 4");
> 
>   FFN<MeanSquaredError<>> ffn;
>   ffn.Add<Linear<>>(1, 2);
>   ffn.Add<ReLULayer<>>();
> 
>   ffn.Train(data, trainingResponses);
> 
>   arma::mat predictedResponses;
>   ffn.Predict(data, predictedResponses);
> 
> After running this piece of code the predictedResponse matrix was the zero matrix (2x2) rather than something close to arma::mat("1 2; 3 4”). What did I do wrong?
> 
> I also have noticed that if I don’t add ReLULayer<>, than there is an error during training:
> 
>   unknown location:0: fatal error: in "CVTest/MSENNTest": signal: SIGABRT (application abort requested)
> 
> Is it possible to train a linear model with the FNN class (i.e. linear regression)?
> 
> Best regards,
> 
> Kirill Mishchenko
> 
> 
> 
> _______________________________________________
> mlpack mailing list
> mlpack at lists.mlpack.org
> http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20170529/fc760839/attachment.html>


More information about the mlpack mailing list