diff options
| author | Danijel Andjelkovic <adanijel99@gmail.com> | 2022-05-05 00:46:39 +0000 |
|---|---|---|
| committer | Danijel Andjelkovic <adanijel99@gmail.com> | 2022-05-05 00:46:39 +0000 |
| commit | c77c5289d01f1f02a57a060dc2166b449e597881 (patch) | |
| tree | cb64f2775335cdd856e81ec9e8ba0bed93fa0985 /frontend/src/app/_elements/form-model/form-model.component.ts | |
| parent | 6f48458e058d3e5a8d559adc22adbe78cba9a253 (diff) | |
| parent | 15c60cb0c179d2d3c353ab3e19370e16d02176eb (diff) | |
Merge branch 'redesign' into 'master'
merge
See merge request igrannonica/neuronstellar!29
Diffstat (limited to 'frontend/src/app/_elements/form-model/form-model.component.ts')
| -rw-r--r-- | frontend/src/app/_elements/form-model/form-model.component.ts | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/frontend/src/app/_elements/form-model/form-model.component.ts b/frontend/src/app/_elements/form-model/form-model.component.ts new file mode 100644 index 00000000..71b374b0 --- /dev/null +++ b/frontend/src/app/_elements/form-model/form-model.component.ts @@ -0,0 +1,138 @@ +import { Component, OnInit, Input, ViewChild, Output, EventEmitter, AfterViewInit } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; +import Shared from 'src/app/Shared'; +import Experiment from 'src/app/_data/Experiment'; +import Model, { Layer, ActivationFunction, LossFunction, LearningRate, LossFunctionBinaryClassification, LossFunctionMultiClassification, LossFunctionRegression, Metrics, MetricsBinaryClassification, MetricsMultiClassification, MetricsRegression, NullValueOptions, Optimizer, ProblemType, Regularisation, RegularisationRate, BatchSize } from 'src/app/_data/Model'; +import { GraphComponent } from '../graph/graph.component'; +import { MatSliderChange } from '@angular/material/slider'; + +@Component({ + selector: 'app-form-model', + templateUrl: './form-model.component.html', + styleUrls: ['./form-model.component.css'] +}) +export class FormModelComponent implements AfterViewInit { + @ViewChild(GraphComponent) graph!: GraphComponent; + @Input() forExperiment!: Experiment; + @Output() selectedModelChangeEvent = new EventEmitter<Model>(); + testSetDistribution: number = 70; + constructor() { } + + ngAfterViewInit(): void { } + + selectFormControl = new FormControl('', Validators.required); + nameFormControl = new FormControl('', [Validators.required, Validators.email]); + selectTypeFormControl = new FormControl('', Validators.required); + selectOptFormControl = new FormControl('', Validators.required); + selectLFFormControl = new FormControl('', Validators.required); + selectLRFormControl = new FormControl('', Validators.required); + selectEpochFormControl = new FormControl('', Validators.required); + selectAFFormControl = new FormControl('', Validators.required); + selectBSFormControl = new FormControl('', Validators.required); + selectActivationFormControl = new FormControl('', Validators.required); + selectRegularisationFormControl = new FormControl('', Validators.required); + selectRRateFormControl = new FormControl('', Validators.required); + + newModel!: Model; + + selectedModel?: Model; + + ProblemType = ProblemType; + ActivationFunction = ActivationFunction; + RegularisationRate = RegularisationRate; + Regularisation = Regularisation; + metrics: any = Metrics; + LossFunction = LossFunction; + Optimizer = Optimizer; + BatchSize = BatchSize; + Object = Object; + document = document; + shared = Shared; + LearningRate = LearningRate; + Layer = Layer; + + term: string = ""; + selectedMetrics = []; + lossFunction: any = LossFunction; + + loadModel(model: Model) { + this.newModel = model; + } + + updateGraph() { + //console.log(this.newModel.layers); + this.graph.update(); + } + + removeLayer() { + if (this.newModel.hiddenLayers > 1) { + this.newModel.layers.splice(this.newModel.layers.length - 1, 1); + this.newModel.hiddenLayers -= 1; + this.updateGraph(); + } + } + addLayer() { + if (this.newModel.hiddenLayers < 128) { + this.newModel.layers.push(new Layer(this.newModel.layers.length, this.selectedActivation, this.selectedNumberOfNeurons, this.selectedRegularisation, this.selectedRegularisationRate)); + + this.newModel.hiddenLayers += 1; + this.updateGraph(); + } + + } + /* + setNeurons() + { + for(let i=0;i<this.newModel.hiddenLayers;i++){ + this.newModel.hiddenLayerNeurons[i]=1; + } + }*/ + numSequence(n: number): Array<number> { + return Array(n); + } + + removeNeuron(index: number) { + if (this.newModel.layers[index].neurons > 1) { + this.newModel.layers[index].neurons -= 1; + this.updateGraph(); + } + } + addNeuron(index: number) { + if (this.newModel.layers[index].neurons < 18) { + this.newModel.layers[index].neurons += 1; + this.updateGraph(); + } + } + selectedActivation: ActivationFunction = ActivationFunction.Sigmoid; + selectedRegularisationRate: RegularisationRate = RegularisationRate.RR1; + selectedRegularisation: Regularisation = Regularisation.L1; + selectedNumberOfNeurons: number = 3; + + changeAllActivation() { + for (let i = 0; i < this.newModel.layers.length; i++) { + this.newModel.layers[i].activationFunction = this.selectedActivation; + + } + + } + changeAllRegularisation() { + for (let i = 0; i < this.newModel.layers.length; i++) { + this.newModel.layers[i].regularisation = this.selectedRegularisation; + } + } + changeAllRegularisationRate() { + for (let i = 0; i < this.newModel.layers.length; i++) { + this.newModel.layers[i].regularisationRate = this.selectedRegularisationRate; + } + } + changeAllNumberOfNeurons() { + for (let i = 0; i < this.newModel.layers.length; i++) { + this.newModel.layers[i].neurons = this.selectedNumberOfNeurons; + this.updateGraph(); + } + } + + updateTestSet(event: MatSliderChange) { + this.testSetDistribution = event.value!; + } +} |
