public ConvolutionalChromosome(ConvolutionalNetwork cNet, ConvRandomParams crp, DenseRandomParams drp) { this.crp = crp; this.drp = drp; //добавить рандомные параметры convPart = new ConvStructure(cNet.slidingWindows, cNet.convActivationIndexes, cNet.filters, cNet.convDropoutIndexes, cNet.convDropoutRates); densePart = new DenseStructure(cNet.denseActivationIndexes, cNet.neurons, cNet.denseDropoutIndexes, cNet.denseDropoutRates); } // конструктор для создания хромосомы из полей описательного класса ConvolutionalNetwork для последующего использования в генетических алгоритмах (например, для поиска лучшего варианта чем текущий)
} // конструктор для создания хромосомы из полей описательного класса ConvolutionalNetwork для последующего использования в генетических алгоритмах (например, для поиска лучшего варианта чем текущий) public void MutateConvolutional(ConvRandomParams crp, int mutateRate) { if (random.Next(100) < mutateRate) { if (random.Next(100) < 5) { convPart = new ConvStructure(crp, random); } else { convPart.MutateLayersNumb(crp, mutateRate); convPart.MutateActivation(crp, mutateRate); convPart.MutateWindows(crp, mutateRate); } } }
public ConvolutionalChromosome(GeneticProgramm gp, Random random) { _gp = gp; this.random = random; nrp = gp._nrp; crp = gp._crp; drp = gp._drp; convPart = new ConvStructure(crp, random); densePart = new DenseStructure(nrp, drp, random); if (nrp.notRandomSpeed) { trainConstSpeed = nrp.trainConstSpeedRange[0]; } else { trainConstSpeed = Convert.ToSingle(random.Next((int)(nrp.trainConstSpeedRange[0] * 1000), (int)(nrp.trainConstSpeedRange[1] * 1000))) / 1000; } optimizer = nrp.optimizers[random.Next(nrp.optimizers.Count)]; loss_function = nrp.loss_functions[random.Next(nrp.loss_functions.Count)]; }