void Start() { m_DataSet = LoadDataSet(); var batch = m_DataSet.Item1[0].batch; m_SirenBuilder = new SirenModel(batch, false, 256, 3, 8, 2, 6, "vector_observation", "continuous_actions", false); m_model = m_SirenBuilder.model; m_parameters = m_SirenBuilder.parameters; if (loadModelFromOnnx) { m_model = ModelLoader.Load(model, false); } m_worker = WorkerFactory.CreateWorker(ms_workerType, m_model, false); m_input = m_DataSet.Item1[9]; m_target = m_DataSet.Item2[9]; m_lr = new Tensor(1, 1, new[] { learningRate }); InitPlot(); var t = m_target.Reshape(new TensorShape(1, 100, 200, 1)); t.ToRenderTexture(targetRT, batch: 0, fromChannel: 0); m_lastUpdateTime = Time.realtimeSinceStartup; StartCoroutine(TrainingLoop()); }
void Start() { if (optimizerText) { optimizerText.SetText(useAdam ? "ADAM" : "SGD"); } var batch = targetImage.height * targetImage.width; var sirenBuilder = new SirenModel(batch, biasOutputAndTarget, useAdam: useAdam, trainableBias: learnBias); m_model = sirenBuilder.model; m_parameters = sirenBuilder.parameters; if (loadModelFromOnnx) { m_model = ModelLoader.Load(model, false); } m_worker = WorkerFactory.CreateWorker(ms_workerType, m_model, false); m_input = new Tensor(batch, 2); InitGrid(ref m_input, targetImage.height, targetImage.width); m_target = new Tensor(targetImage, channels: 1); m_target = m_target.Reshape(new TensorShape(batch, 1)); m_lr = new Tensor(1, 1, new[] { learningRate }); m_beta1 = new Tensor(1, 1, new[] { beta1 }); m_beta2 = new Tensor(1, 1, new[] { beta2 }); m_epsilon = new Tensor(1, 1, new[] { epsilon }); m_worker.SetInput("input", m_input); m_worker.SetInput("target", m_target); m_worker.SetInput("lr", m_lr); m_worker.SetInput("beta1", m_beta1); m_worker.SetInput("beta2", m_beta2); m_worker.SetInput("epsilon", m_epsilon); InitPlot(); m_lastUpdateTime = Time.realtimeSinceStartup; }