diff options
author | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-04-09 14:27:06 +0200 |
---|---|---|
committer | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-04-09 14:27:06 +0200 |
commit | ac55fd20fb1cfa3090c67aa11f4901cac5ee8384 (patch) | |
tree | f3f3e80381bcc2a3cf2b5224851b44372ffebee6 /backend | |
parent | b230b345d07d31b5cee2bc331368a21a6f789cdb (diff) | |
parent | bf4e38854847c133244cd70f89e899116a7d1a60 (diff) |
Merge branch 'dev' of http://gitlab.pmf.kg.ac.rs/igrannonica/neuronstellar into dev
Diffstat (limited to 'backend')
-rw-r--r-- | backend/api/api/Controllers/ExperimentController.cs | 14 | ||||
-rw-r--r-- | backend/api/api/Controllers/PredictorController.cs | 12 | ||||
-rw-r--r-- | backend/api/api/Models/Experiment.cs | 2 | ||||
-rw-r--r-- | backend/api/api/Models/Predictor.cs | 2 | ||||
-rw-r--r-- | backend/api/api/Services/IMlConnectionService.cs | 2 | ||||
-rw-r--r-- | backend/microservice/api/newmlservice.py | 25 |
6 files changed, 55 insertions, 2 deletions
diff --git a/backend/api/api/Controllers/ExperimentController.cs b/backend/api/api/Controllers/ExperimentController.cs index 2a2db31e..190c0e01 100644 --- a/backend/api/api/Controllers/ExperimentController.cs +++ b/backend/api/api/Controllers/ExperimentController.cs @@ -15,11 +15,15 @@ namespace api.Controllers private readonly IExperimentService _experimentService; private IJwtToken jwtToken; + private readonly IMlConnectionService _mlConnectionService; + private readonly IFileService _fileService; - public ExperimentController(IExperimentService experimentService, IConfiguration configuration, IJwtToken Token) + public ExperimentController(IExperimentService experimentService, IConfiguration configuration, IJwtToken Token, IMlConnectionService mlConnectionService, IFileService fileService) { _experimentService = experimentService; jwtToken = Token; + _mlConnectionService = mlConnectionService; + _fileService = fileService; } [HttpPost("add")] @@ -35,6 +39,14 @@ namespace api.Controllers uploaderId = jwtToken.TokenToId(parameter); if (uploaderId == null) return null; + else + { + FileModel fileModel = _fileService.getFile(experiment.fileId); + experiment.isPreProcess = false; + _experimentService.Create(experiment); + _mlConnectionService.PreProcess(experiment, fileModel.path); + return Ok(); + } } else return BadRequest(); diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index 161271e2..20d8f962 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -15,11 +15,16 @@ namespace api.Controllers { private readonly IPredictorService _predictorService; private IJwtToken jwtToken; + private readonly IMlConnectionService _mlConnectionService; + private readonly IFileService _fileService; - public PredictorController(IPredictorService predictorService, IConfiguration configuration, IJwtToken Token) + public PredictorController(IPredictorService predictorService, IConfiguration configuration, IJwtToken Token, IMlConnectionService mlConnectionService, IFileService fileService) { _predictorService = predictorService; jwtToken = Token; + _mlConnectionService = mlConnectionService; + _fileService = fileService; + } // GET: api/<PredictorController>/mypredictors @@ -183,6 +188,11 @@ namespace api.Controllers _predictorService.Create(predictor); return CreatedAtAction(nameof(Get), new { id = predictor._id }, predictor); + FileModel fileModel = _fileService.getFile(predictor.fileId); + predictor.isPreProcess = false; + _predictorService.Create(predictor); + _mlConnectionService.PreProcess(predictor, fileModel.path); + return Ok(); } } diff --git a/backend/api/api/Models/Experiment.cs b/backend/api/api/Models/Experiment.cs index 6de3f169..903d6dae 100644 --- a/backend/api/api/Models/Experiment.cs +++ b/backend/api/api/Models/Experiment.cs @@ -18,6 +18,8 @@ namespace api.Models public float randomTestSetDistribution { get; set; } public string nullValues { get; set; } public NullValues[] nullValuesReplacers { get; set; } + public string fileId { get; set; } + public bool isPreProcess { get; set; } } } diff --git a/backend/api/api/Models/Predictor.cs b/backend/api/api/Models/Predictor.cs index 5fd2aa09..d4ee9fa7 100644 --- a/backend/api/api/Models/Predictor.cs +++ b/backend/api/api/Models/Predictor.cs @@ -18,6 +18,8 @@ namespace api.Models public bool accessibleByLink { get; set; } public DateTime dateCreated { get; set; } public string experimentId { get; set; } + public string fileId { get; set; } + public bool isPreProcess { get; set; } } } diff --git a/backend/api/api/Services/IMlConnectionService.cs b/backend/api/api/Services/IMlConnectionService.cs index ea73fb0f..8d7e207d 100644 --- a/backend/api/api/Services/IMlConnectionService.cs +++ b/backend/api/api/Services/IMlConnectionService.cs @@ -7,6 +7,8 @@ namespace api.Services { Task<string> SendModelAsync(object model, object dataset); Task PreProcess(Dataset dataset, string filePath); + Task PreProcess(Experiment experiment, string filePath); + Task PreProcess(Predictor predictor, string filePath); //Task<Dataset> PreProcess(Dataset dataset, byte[] file, string filename); } }
\ No newline at end of file diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index 02f2ad6d..a92307c5 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -222,6 +222,31 @@ def train(dataset, params, callback): classifier.add(tf.keras.layers.Dense(units=params['hiddenLayerNeurons'], activation=params['hiddenLayerActivationFunctions'][i+1]))#i-ti skriveni sloj classifier.add(tf.keras.layers.Dense(units=5, activation=params['outputLayerActivationFunction']))#izlazni sloj + if(params['optimizer']=='Adam'): + opt=tf.keras.optimizers.Adam(learning_rate=params['learningRate']) + + elif(params['optimizer']=='Adadelta'): + opt=tf.keras.optimizers.Adadelta(learning_rate=params['learningRate']) + + elif(params['optimizer']=='Adagrad'): + opt=tf.keras.optimizers.Adagrad(learning_rate=params['learningRate']) + + elif(params['optimizer']=='Adamax'): + opt=tf.keras.optimizers.Adamax(learning_rate=params['learningRate']) + + elif(params['optimizer']=='Nadam'): + opt=tf.keras.optimizers.Nadam(learning_rate=params['learningRate']) + + elif(params['optimizer']=='SGD'): + opt=tf.keras.optimizers.SGD(learning_rate=params['learningRate']) + + elif(params['optimizer']=='Ftrl'): + opt=tf.keras.optimizers.Ftrl(learning_rate=params['learningRate']) + + elif(params['optimizer']=='RMSprop'): + opt=tf.keras.optimizers.RMSprop(learning_rate=params['learningRate']) + + classifier.compile(loss =params["lossFunction"] , optimizer = params['optimizer'] , metrics =params['metrics']) history=classifier.fit(x_train, y_train, epochs = params['epochs'],batch_size=params['batchSize']) |