aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/app/_data/Model.ts21
-rw-r--r--frontend/src/app/_elements/form-model/form-model.component.html8
-rw-r--r--frontend/src/app/_elements/form-model/form-model.component.ts39
-rw-r--r--frontend/src/app/_elements/graph/graph.component.ts9
4 files changed, 39 insertions, 38 deletions
diff --git a/frontend/src/app/_data/Model.ts b/frontend/src/app/_data/Model.ts
index 00ac0d0c..094378f3 100644
--- a/frontend/src/app/_data/Model.ts
+++ b/frontend/src/app/_data/Model.ts
@@ -14,19 +14,34 @@ export default class Model {
public optimizer: Optimizer = Optimizer.Adam,
public lossFunction: LossFunction = LossFunction.MeanSquaredError,
public inputNeurons: number = 1,
- public hiddenLayerNeurons: number=1,
public hiddenLayers: number = 1,
public batchSize: number = 5,
- public hiddenLayerActivationFunctions: string[] = ['sigmoid'],
public outputLayerActivationFunction: ActivationFunction = ActivationFunction.Sigmoid,
public uploaderId: string = '',
public metrics: string[] = [], // TODO add to add-model form
public epochs: number = 5, // TODO add to add-model form
public inputColNum:number=5,
- public learningRate:number=0.01
+ public learningRate:number=0.01,
+ public layers:Layer[]=[new Layer()]
+
) { }
}
+export class Layer{
+ constructor(
+ public layerNumber:number=0,
+ public activationFunction:ActivationFunction=ActivationFunction.Sigmoid,
+ public neurons:number=1,
+ public regularisation:Regularisation=Regularisation.L1,
+ public regularisationRate:number=0.01
+ )
+ {}
+
+}
+export enum Regularisation{
+ L1='l1',
+ L2='l2'
+}
export enum ProblemType {
Regression = 'regresioni',
BinaryClassification = 'binarni-klasifikacioni',
diff --git a/frontend/src/app/_elements/form-model/form-model.component.html b/frontend/src/app/_elements/form-model/form-model.component.html
index 0b63c5ac..ac5ca9ab 100644
--- a/frontend/src/app/_elements/form-model/form-model.component.html
+++ b/frontend/src/app/_elements/form-model/form-model.component.html
@@ -126,7 +126,7 @@
<hr>
<div class="row" style="max-width:60rem ;">
- <div class="col text-center" *ngFor="let item of numSequence(newModel.hiddenLayers)" >
+ <div class="col text-center" *ngFor="let item of numSequence(newModel.hiddenLayers); let i=index" >
{{item}}
<div class="neuron">
<div style="text-align: center;">
@@ -147,9 +147,9 @@
</div>
<div class="row" >
<div class="col-6" style="font-size: 13px;" >Broj Ĩvorova</div>
- <mat-icon (click)="addNeuron()">add_circle</mat-icon>
- <div class="col-1">{{newModel.hiddenLayerNeurons}}</div>
- <mat-icon (click)="removeNeuron()">remove_circle</mat-icon>
+ <mat-icon (click)="addNeuron(i)">add_circle</mat-icon>
+ <div class="col-1">{{newModel.layers[i].neurons}}</div>
+ <mat-icon (click)="removeNeuron(i)">remove_circle</mat-icon>
</div>
<div class='row' style="margin-bottom: -7px;">
diff --git a/frontend/src/app/_elements/form-model/form-model.component.ts b/frontend/src/app/_elements/form-model/form-model.component.ts
index b1d0a2a9..40bc30ea 100644
--- a/frontend/src/app/_elements/form-model/form-model.component.ts
+++ b/frontend/src/app/_elements/form-model/form-model.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit ,Input, ViewChild, Output, EventEmitter} from '@angul
import {FormControl, Validators} from '@angular/forms';
import Shared from 'src/app/Shared';
import Experiment from 'src/app/_data/Experiment';
-import Model, { ActivationFunction, LossFunction, LossFunctionBinaryClassification, LossFunctionMultiClassification, LossFunctionRegression, Metrics, MetricsBinaryClassification, MetricsMultiClassification, MetricsRegression, NullValueOptions, Optimizer, ProblemType } from 'src/app/_data/Model';
+import Model, {Layer, ActivationFunction, LossFunction, LossFunctionBinaryClassification, LossFunctionMultiClassification, LossFunctionRegression, Metrics, MetricsBinaryClassification, MetricsMultiClassification, MetricsRegression, NullValueOptions, Optimizer, ProblemType } from 'src/app/_data/Model';
import { GraphComponent } from '../graph/graph.component';
import {FormGroupDirective, NgForm} from '@angular/forms';
import {ErrorStateMatcher} from '@angular/material/core';
@@ -65,26 +65,20 @@ export class FormModelComponent implements OnInit {
removeLayer(){
if(this.newModel.hiddenLayers>1)
{
+ this.newModel.layers.splice(this.newModel.layers.length-1,1);
this.newModel.hiddenLayers-=1;
this.updateGraph();
}
- else
- {
- this.newModel.hiddenLayers=this.newModel.hiddenLayers;
- }
-
}
addLayer(){
if(this.newModel.hiddenLayers<12)
{
+ this.newModel.layers.push(new Layer(this.newModel.layers.length));
+
this.newModel.hiddenLayers+=1;
this.updateGraph();
}
- else
- {
- this.newModel.hiddenLayers=this.newModel.hiddenLayers;
-
- }
+
}
removeBatch(){
if(this.newModel.batchSize>1)
@@ -140,28 +134,19 @@ export class FormModelComponent implements OnInit {
numSequence(n: number): Array<number> {
return Array(n);
}
- removeNeuron(){
- if(this.newModel.hiddenLayerNeurons>1)
+
+ removeNeuron(index:number){
+ if(this.newModel.layers[index].neurons>1)
{
- this.newModel.hiddenLayerNeurons=this.newModel.hiddenLayerNeurons-1;
+ this.newModel.layers[index].neurons-=1;
this.updateGraph();
}
- else
- {
- this.newModel.hiddenLayerNeurons=this.newModel.hiddenLayerNeurons;
- }
-
}
- addNeuron(){
- if(this.newModel.hiddenLayerNeurons<100)
+ addNeuron(index:number){
+ if(this.newModel.layers[index].neurons<100)
{
- this.newModel.hiddenLayerNeurons=this.newModel.hiddenLayerNeurons+1;
+ this.newModel.layers[index].neurons+=1;
this.updateGraph();
}
- else
- {
- this.newModel.hiddenLayerNeurons=this.newModel.hiddenLayerNeurons;
-
- }
}
}
diff --git a/frontend/src/app/_elements/graph/graph.component.ts b/frontend/src/app/_elements/graph/graph.component.ts
index 8051acc3..c20d3dd7 100644
--- a/frontend/src/app/_elements/graph/graph.component.ts
+++ b/frontend/src/app/_elements/graph/graph.component.ts
@@ -1,6 +1,6 @@
import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';
import Dataset from 'src/app/_data/Dataset';
-import Model from 'src/app/_data/Model';
+import Model,{Layer} from 'src/app/_data/Model';
@Component({
selector: 'app-graph',
@@ -26,6 +26,7 @@ export class GraphComponent implements AfterViewInit {
@Input() outputNodeColor: string = '#44ee22';
private ctx?: CanvasRenderingContext2D;
+ @Input() inputNeurons: number=1;
constructor() { }
@@ -50,7 +51,7 @@ export class GraphComponent implements AfterViewInit {
let inputNodeIndex = 0;
const inputLayer: Node[] = [];
while (inputNodeIndex < this.inputCols) {
- const x = 0.5 / (this.model!.hiddenLayers + 2);
+ const x = 0.5 / (this.inputNeurons + 2);
const y = (inputNodeIndex + 0.5) / this.inputCols;
const node = new Node(x, y, this.inputNodeColor);
inputLayer.push(node);
@@ -62,9 +63,9 @@ export class GraphComponent implements AfterViewInit {
while (layerIndex < this.model!.hiddenLayers + 1) {
const newLayer: Node[] = [];
let nodeIndex = 0;
- while (nodeIndex < this.model!.hiddenLayerNeurons) {
+ while (nodeIndex < this.model!.layers[layerIndex].neurons) {
const x = (layerIndex + 0.5) / (this.model!.hiddenLayers + 2);
- const y = (nodeIndex + 0.5) / this.model!.hiddenLayerNeurons;
+ const y = (nodeIndex + 0.5) / this.model!.layers[layerIndex].neurons;
const node = new Node(x, y, this.nodeColor);
newLayer.push(node);
nodeIndex += 1;