Hi,

I am trying to build a VERY basic neural network as a practice before
hopefully increasing my scope.  To do so, I have been using package "neural"
and the MLP related functions (mlp and mlptrain) within that package.

So far, I have created a basic network, but I have been unable to change the
default activation function.  If someone has a suggestion, please advise.

The goal of the network is to properly classify a number as positive or
negative.  Simple 1-layer network with a single neuron in each layer.

Rcode:
trainInput <- matrix(rnorm(10))
trainAnswers <- ifelse(trainInput <0, -1, 1)

trainNeurons <- 1

trainingData <- mlptrain(inp=trainInput, neurons=trainNeurons,
out=trainAnswers, it=1000)

##  To call this network, we can see how it works on a set of known positive
and negative values

testInput <- matrix(-2:2)
mlp(testInput, trainingData$weight, trainingData$dist, trainingData$neurons,
trainingData$actfns)

Will vary - but output on my computer was:
            [,1]
[1,] 0.001043291
[2,] 0.001045842
[3,] 0.072451270
[4,] 0.950744548
[5,] 0.950931168

So it's instead classifying the negatives as 0 and positives as 1 (getting
close to, anyhow - increasing the number of iterations, ie it=5000, makes
that more clear)
This results in a neural net with activation function 1/(1+exp(-x)) - which
will never result in the -1 value that the answers contain.

The documentation for package neural specifies the parameter "actfns", which
should be a list containing the numeric code for the activation functions of
each layer - however, anytime I try to put in a value for "actfns"  (such as
actfns=2 for hyperbolic tangent), I get the error:

"Different activation function and active layer number"

If anyone can shed light on what I'm doing wrong here with the activation
functions or how to change the activation functions, I'd really appreciate
it.

Thanks!

	[[alternative HTML version deleted]]


