diff options
author | Nevena Bojovic <nenabojov@gmail.com> | 2022-03-19 22:39:12 +0100 |
---|---|---|
committer | Nevena Bojovic <nenabojov@gmail.com> | 2022-03-19 22:39:12 +0100 |
commit | 02362378a6b0a7b2db6b7fb2ba09cf529b292508 (patch) | |
tree | 2a4a1b00baaa0c2b68378cd34e3997a584e00ba6 | |
parent | 5f40d4a21a09b481343f894eab7970de895744d7 (diff) |
Proveravanje hiperparametara mreze uradjeno.
-rw-r--r-- | backend/api/api/Controllers/ModelController.cs | 2 | ||||
-rw-r--r-- | backend/api/api/Models/Model.cs | 2 | ||||
-rw-r--r-- | backend/api/api/Services/IModelService.cs | 1 | ||||
-rw-r--r-- | backend/api/api/Services/ModelService.cs | 12 | ||||
-rw-r--r-- | frontend/src/app/_data/Model.ts | 48 |
5 files changed, 60 insertions, 5 deletions
diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index 1d03d924..a4fa99c4 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -86,6 +86,8 @@ namespace api.Controllers [Authorize(Roles = "User")] public ActionResult<Model> Post([FromBody] Model model) { + if (_modelService.CheckHyperparameters(model.inputNeurons, model.hiddenLayerNeurons, model.hiddenLayers, model.outputNeurons) == false) + return BadRequest("Bad parameters!"); var existingModel = _modelService.GetOneModel(model.username, model.name); if (existingModel != null) diff --git a/backend/api/api/Models/Model.cs b/backend/api/api/Models/Model.cs index dfc4336a..52516cd9 100644 --- a/backend/api/api/Models/Model.cs +++ b/backend/api/api/Models/Model.cs @@ -36,6 +36,8 @@ namespace api.Models public int hiddenLayerNeurons { get; set; } public int hiddenLayers { get; set; } public int batchSize { get; set; } + // na izlazu je moguce da bude vise neurona (klasifikacioni problem sa vise od 2 klase) + public int outputNeurons { get; set; } public string inputLayerActivationFunction { get; set; } public string hiddenLayerActivationFunction { get; set; } public string outputLayerActivationFunction { get; set; } diff --git a/backend/api/api/Services/IModelService.cs b/backend/api/api/Services/IModelService.cs index c1931ffa..887be4ae 100644 --- a/backend/api/api/Services/IModelService.cs +++ b/backend/api/api/Services/IModelService.cs @@ -11,6 +11,7 @@ namespace api.Services Model Create(Model model); void Update(string username, string name, Model model); void Delete(string username, string name); + bool CheckHyperparameters(int inputNeurons, int hiddenLayerNeurons, int hiddenLayers, int outputNeurons); } } diff --git a/backend/api/api/Services/ModelService.cs b/backend/api/api/Services/ModelService.cs index 2ba3c54d..3d5c3b3e 100644 --- a/backend/api/api/Services/ModelService.cs +++ b/backend/api/api/Services/ModelService.cs @@ -7,7 +7,6 @@ namespace api.Services { public class ModelService : IModelService { - private readonly IMongoCollection<Model> _model; public ModelService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient) @@ -46,6 +45,17 @@ namespace api.Services { _model.ReplaceOne(model => model.username == username && model.name == name, model); } + // + public bool CheckHyperparameters(int inputNeurons, int hiddenLayerNeurons, int hiddenLayers, int outputNeurons) + { + if (hiddenLayers <= 0 || hiddenLayerNeurons <= 0) + return false; + if (hiddenLayers > inputNeurons) + return false; + if (hiddenLayerNeurons <= 2 * inputNeurons || hiddenLayerNeurons <= (2 / 3) * inputNeurons + outputNeurons || (hiddenLayerNeurons <= Math.Max(inputNeurons, outputNeurons) && hiddenLayerNeurons >= Math.Min(inputNeurons, outputNeurons))) + return true; + return false; + } } } diff --git a/frontend/src/app/_data/Model.ts b/frontend/src/app/_data/Model.ts index a891c10c..594bf129 100644 --- a/frontend/src/app/_data/Model.ts +++ b/frontend/src/app/_data/Model.ts @@ -39,21 +39,61 @@ export enum ANNType { // removeOutliers export enum Encoding { Label = 'label', - OneHot = 'one hot' + OneHot = 'one hot', + BackwardDifference = 'backward difference', + BaseN = 'baseN', + Binary = 'binary', + CatBoost = 'cat boost', + Count = 'count', + GLMM = 'glmm', + Hashing = 'hashing', + Helmert = 'helmert', + JamesStein = 'james stein', + LeaveOneOut = 'leave one out', + MEstimate = 'MEstimate', + Ordinal = 'ordinal', + Sum = 'sum', + Polynomial = 'polynomial', + Target = 'target', + WOE = 'woe', + Quantile = 'quantile' } export enum ActivationFunction { + // linear + Binary_Step = 'binaryStep', + Linear = 'linear', + // non-linear Relu = 'relu', + Leaky_Relu = 'leakyRelu', + Parameterised_Relu = 'parameterisedRelu', + Exponential_Linear_Unit = 'exponentialLinearUnit', + Swish = 'swish', Sigmoid = 'sigmoid', Tanh = 'tanh', - Linear = 'linear' + Softmax = 'softmax' } export enum LossFunction { + // binary classification loss functions BinaryCrossEntropy = 'binary_crossentropy', - MeanSquaredError = 'mean_squared_error' + HingeLoss = 'hinge_loss', + // multi-class classiication loss functions + CategoricalCrossEntropy = 'categorical_crossentropy', + KLDivergence = 'kullback_leibler_divergence', + // regression loss functions + MeanSquaredError = 'mean_squared_error', + MeanAbsoluteError = 'mean_absolute_error', + HuberLoss = 'Huber', } export enum Optimizer { - Adam = 'adam' + Adam = 'Adam', + Adadelta = 'Adadelta', + Adagrad = 'Adagrad', + Ftrl = 'Ftrl', + Nadam = 'Nadam', + SGD = 'SGD', + SGDMomentum = 'SGDMomentum', + RMSprop = 'RMSprop' }
\ No newline at end of file |