Example #1
0
class_methods_end


int FFNet_init (FFNet me, long numberOfInputs, long nodesInLayer1, long nodesInLayer2, 
	long numberOfOutputs, int outputsAreLinear)
{
	long numberOfLayers = 3;
	
	if (numberOfInputs < 1 || numberOfOutputs < 1) return 0;
	if (nodesInLayer1 < 1) numberOfLayers--;
	if (nodesInLayer2 < 1) numberOfLayers--;
	my nLayers = numberOfLayers;
	my nUnitsInLayer = NUMlvector (0, numberOfLayers);
	if (my nUnitsInLayer == NULL) return 0;
	
	my nUnitsInLayer[numberOfLayers--] = numberOfOutputs;
	if (nodesInLayer2 > 0) my nUnitsInLayer[numberOfLayers--] = nodesInLayer2;
	if (nodesInLayer1 > 0) my nUnitsInLayer[numberOfLayers--] = nodesInLayer1;
	my nUnitsInLayer[numberOfLayers] = numberOfInputs;
	Melder_assert (numberOfLayers == 0);
	my outputsAreLinear = outputsAreLinear;
	
	if (! bookkeeping (me)) return 0;
	
	FFNet_setCostFunction (me, FFNet_COST_MSE);
	FFNet_setNonLinearity (me, FFNet_NONLIN_SIGMOID);
    FFNet_reset (me, 0.1);
	
	return 1;
}
Example #2
0
void FFNet_init (FFNet me, long numberOfInputs, long nodesInLayer1, long nodesInLayer2, long numberOfOutputs, int outputsAreLinear) {
	long numberOfLayers = 3;

	if (numberOfInputs < 1) {
		Melder_throw (U"Number of inputs must be a natural number.");
	}
	if (numberOfOutputs < 1) {
		Melder_throw (U"Number of outputs must be a natural number.");
	}
	if (nodesInLayer1 < 1) {
		numberOfLayers--;
	}
	if (nodesInLayer2 < 1) {
		numberOfLayers--;
	}
	my nLayers = numberOfLayers;
	my nUnitsInLayer = NUMvector<long> (0, numberOfLayers);

	my nUnitsInLayer[numberOfLayers--] = numberOfOutputs;
	if (nodesInLayer2 > 0) {
		my nUnitsInLayer[numberOfLayers--] = nodesInLayer2;
	}
	if (nodesInLayer1 > 0) {
		my nUnitsInLayer[numberOfLayers--] = nodesInLayer1;
	}
	my nUnitsInLayer[numberOfLayers] = numberOfInputs;
	Melder_assert (numberOfLayers == 0);
	my outputsAreLinear = outputsAreLinear;

	bookkeeping (me);

	FFNet_setCostFunction (me, FFNet_COST_MSE);
	FFNet_setNonLinearity (me, FFNet_NONLIN_SIGMOID);
	FFNet_reset (me, 0.1);
}