- ЦП-2,6 ГГц
- ОЗУ 16 ГБ
- Win-11
- 64-разрядная ОС
- NVIDEA - GeForce GTX 1650 Ti
- Какие стандартные конфигурации необходимы для оптимальной работы функций net.Forward программы Classify2DDemo?
- Каковы варианты сокращения времени обработки с 7 мс до 2 мс?
Большое спасибо за ваш ответ. Что касается программного обеспечения, я хочу быстро проверить некоторые детали. Я использую пакет ConvNetSharp для обработки сигналов (а не для обработки изображений). Я работаю над обработкой данных ЭЭГ, где у меня на повязке есть «4 электрода». Я фиксирую «эпоху 500 образцов» с каждого электрода одновременно. Таких эпох у меня собрано 3000+ в разное время. Я обучаю нейронную сеть на основе этих данных. Я спроектировал нейронную сеть следующим образом:
Код: Выделить всё
using ConvNetSharp.Core.Training;
using ConvNetSharp.Core;
using ConvNetSharp.Core.Layers.Double;
using System;
using ConvNetSharp.Volume;
using ConvNetSharp.Volume.Double;
public class CNNModelTraining
{
public const int iterations = 40;
public const int featureNumber = 2000;
public const int featuresWithLabels = 2001;
public CNNModelTraining()
{
BuilderInstance.Volume = new VolumeBuilder();
}
public ConvNetSharp.Core.Net CreateCNNNetwork()
{
ConvNetSharp.Core.Net net1 = new Net();
net1.AddLayer(new InputLayer(500, 4, 1));
net1.AddLayer(new ConvLayer(5, 2, 20) { Stride = 2, Pad = 0 });
net1.AddLayer(new ReluLayer());
net1.AddLayer(new PoolLayer(2, 1));
net1.AddLayer(new ConvLayer(3, 1, 30) { Stride = 2, Pad = 0 });
net1.AddLayer(new ReluLayer());
//net1.AddLayer(new PoolLayer(3, 1));
net1.AddLayer(new FullyConnLayer(3));
net1.AddLayer(new SoftmaxLayer(3));
return net1;
}
public TrainerBase GetTrainerForNetwork(Net paramNet)
{
return new AdamTrainer(paramNet) { LearningRate = 0.00003, BatchSize = 30 };
}
public static void TrainModel(double[][] jaggedBalancedData, double[][] outputArray, TrainerBase trainerParam, ConvNetSharp.Core.Net net1Param)
{
Console.WriteLine("Starting to train the network ...");
Console.WriteLine(outputArray.GetLength(0));
Console.WriteLine(jaggedBalancedData.GetLength(0));
var netx = BuilderInstance.Volume.SameAs(new Shape(500, 4, 1, jaggedBalancedData.GetLength(0)));
var hotLabels = BuilderInstance.Volume.SameAs(new Shape(1, 1, 1, outputArray.GetLength(0)));
for (var ix = 0; ix < outputArray.GetLength(0); ix++) //Swati
{
Console.WriteLine($"{ix} {(int)outputArray[ix][0]}");
hotLabels.Set(0, 0, 0, ix, (int)outputArray[ix][0]);
for (var featureGrp = 0; featureGrp < 4; ++featureGrp)
{
for (int features = 0; features < 500; ++features)
netx.Set(features, featureGrp, 0, ix, jaggedBalancedData[ix][features + (featureGrp * 500)]);
}
}
for (var iters = 0; iters < CNNModelTraining.iterations; iters++)
{
trainerParam.Train(netx, hotLabels);
Console.WriteLine(trainerParam.Loss);
}
}
}
Если я спроектирую свой первый ConvLayer как (5, 2, 20), будет ли он обрабатываться? все 4 электрода? ИЛИ мне нужно обязательно указать его как (5, 4, 20), чтобы обработать их все?
Слоем пула является «уровень среднего пула» или «уровень максимального пула»?
Подробнее здесь: https://stackoverflow.com/questions/789 ... erformance
Мобильная версия