aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorOgnjen Cirkovic <ciraboxkg@gmail.com>2022-04-09 14:27:06 +0200
committerOgnjen Cirkovic <ciraboxkg@gmail.com>2022-04-09 14:27:06 +0200
commitac55fd20fb1cfa3090c67aa11f4901cac5ee8384 (patch)
treef3f3e80381bcc2a3cf2b5224851b44372ffebee6 /backend
parentb230b345d07d31b5cee2bc331368a21a6f789cdb (diff)
parentbf4e38854847c133244cd70f89e899116a7d1a60 (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.cs14
-rw-r--r--backend/api/api/Controllers/PredictorController.cs12
-rw-r--r--backend/api/api/Models/Experiment.cs2
-rw-r--r--backend/api/api/Models/Predictor.cs2
-rw-r--r--backend/api/api/Services/IMlConnectionService.cs2
-rw-r--r--backend/microservice/api/newmlservice.py25
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'])