Example #1
0
        /// <summary>
        /// Создаёт новый экземпляр схемы тренировки нейросети, без сохранения в базу данных.
        /// </summary>
        public SkyTrainScheme CreateTrainScheme()
        {
            SkyTrainScheme trainScheme = this.Context.ObjectAdapters.TrainSchemes.CreateObject();

            trainScheme.NetworkID = this.ID;
            return(trainScheme);
        }
Example #2
0
        /// <summary>
        /// Создаёт новый запрос тренировки нейросети для заданной схемы тренировок.
        /// Тренировка нейросети может быть инициализирована на основе другого состояния нейросети.
        /// </summary>
        /// <param name="trainSchemeID">Идентификатор схемы тренировок.</param>
        /// <param name="initialStateID">Идентификатор состояния нейросети, на основе которого будет выполнена тренировка.
        /// Если тренировка является первичной, необходимо передать значение 0.</param>
        /// <param name="user">Идентификатор схемы тренировок.</param>
        public SkyTrainRequest CreateTrainRequest(int trainSchemeID, int initialStateID, ISkyUser user)
        {
            if (trainSchemeID == 0)
            {
                throw new ArgumentNullException("trainSchemeID");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            this.CheckExists();

            //получаем схему тренировок.
            SkyTrainScheme trainScheme = this.Context.ObjectAdapters.TrainSchemes.GetObject(trainSchemeID, true);

            //проверяем, что схема тренировок принадлежит данной сети.
            if (trainScheme.Network.ID != this.Network.ID)
            {
                throw new Exception(string.Format("The training scheme with ID={0} does not belong to the neural network with ID={1} to which this version of the neural network belongs.",
                                                  trainScheme.ID, this.Network.ID));
            }

            //получаем инициализационное состояние.
            SkyNetworkState initialState = null;

            if (initialStateID > 0)
            {
                initialState = this.Context.ObjectAdapters.NetworkStates.GetObject(initialStateID, true);

                //проверяем, что инициализационное состояние принадлежит данной версии.
                if (initialState.NetworkVersion.ID != this.ID)
                {
                    throw new Exception(string.Format("The network state with ID={0} does not belong to the version of the neural network with ID={1}.",
                                                      initialState.ID, this.ID));
                }
            }

            //создаём запрос тренировки.
            SkyTrainRequest trainRequest = this.Context.ObjectAdapters.TrainRequests.CreateObject();

            trainRequest.NetworkID        = this.Network.ID;
            trainRequest.NetworkVersionID = this.ID;
            trainRequest.TrainSchemeID    = trainScheme.ID;
            trainRequest.InitialStateID   = initialState != null ? initialState.ID : 0;
            trainRequest.UserID           = user.ID;
            trainRequest.Status           = SkyTrainRequestStatus.Creating;

            //возвращаем созданный экземпляр.
            return(trainRequest);
        }
Example #3
0
        internal SkyTrainEpoch(int epochNumber, SkyTrainEpochParams epochParams, SkyTrainScheme trainScheme)
        {
            if (epochNumber <= 0)
            {
                throw new ArgumentException("Epoch number must be greater than zero.", "epochNumber");
            }
            if (epochParams == null)
            {
                throw new ArgumentNullException("epochParams");
            }
            if (trainScheme == null)
            {
                throw new ArgumentNullException("trainScheme");
            }

            this.EpochNumber = epochNumber;
            this.Params      = epochParams;
            this.TrainScheme = trainScheme;
        }