コード例 #1
0
 public IpfsJob(string input, string target, JToken model, IpfsJobConfig config)
 {
     this.input  = input;
     this.target = target;
     this.Model  = model;
     this.config = config;
 }
コード例 #2
0
ファイル: Grid.cs プロジェクト: RobSalzwedel/OpenMined
        public void Run(int inputId, int targetId, List <GridConfiguration> configurations, MonoBehaviour owner)
        {
            Debug.Log("Grid.Run");

            string ipfsHash = "";

            var inputTensor  = controller.floatTensorFactory.Get(inputId);
            var targetTensor = controller.floatTensorFactory.Get(targetId);

            // write the input and target tensors to Ipfs
            var inputJob  = new Ipfs();
            var targetJob = new Ipfs();

            var inputIpfsResponse  = inputJob.Write(inputTensor.GetConfig());
            var targetIpfsResponse = targetJob.Write(targetTensor.GetConfig());

            Debug.Log("Input Hash: " + inputIpfsResponse.Hash);
            Debug.Log("Target Hash: " + targetIpfsResponse.Hash);

            var jobs = new string[configurations.Count];

            for (var i = 0; i < configurations.Count; ++i)
            {
                var config          = configurations[i];
                var model           = controller.getModel(config.model) as Sequential;
                var serializedModel = model.GetConfig();

                var configJob     = new Ipfs();
                var ipfsJobConfig = new IpfsJobConfig(config.lr);
                var response      = configJob.Write(new IpfsJob(serializedModel, ipfsJobConfig));

                jobs[i] = response.Hash;
            }

            var experiment         = new IpfsExperiment(inputIpfsResponse.Hash, targetIpfsResponse.Hash, jobs);
            var experimentWriteJob = new Ipfs();
            var experimentResult   = experimentWriteJob.Write(experiment);

            var request = new Request();

            owner.StartCoroutine(request.AddModel(owner, experimentResult.Hash));

            PollNext(owner, request);
        }
コード例 #3
0
ファイル: Grid.cs プロジェクト: shubham3121/OpenMined
        public string Run(int inputId, int targetId, List <GridConfiguration> configurations, MonoBehaviour owner)
        {
            Debug.Log("Grid.Run");

            var inputTensor  = controller.floatTensorFactory.Get(inputId);
            var targetTensor = controller.floatTensorFactory.Get(targetId);

            // write the input and target tensors to Ipfs
            var inputJob  = new Ipfs();
            var targetJob = new Ipfs();

            var inputIpfsResponse  = inputJob.Write(inputTensor.GetConfig());
            var targetIpfsResponse = targetJob.Write(targetTensor.GetConfig());

            Debug.Log("Input Hash: " + inputIpfsResponse.Hash);
            Debug.Log("Target Hash: " + targetIpfsResponse.Hash);

            var jobs = new string[configurations.Count];

            for (var i = 0; i < configurations.Count; ++i)
            {
                var config          = configurations[i];
                var model           = controller.GetModel(config.model) as Sequential;
                var serializedModel = model.GetConfig();

                var configJob     = new Ipfs();
                var ipfsJobConfig = new IpfsJobConfig(config.lr, config.criterion, config.iters);

                var response = configJob.Write(new IpfsJob(inputIpfsResponse.Hash, targetIpfsResponse.Hash, serializedModel, ipfsJobConfig));

                jobs[i] = response.Hash;
            }

            var experiment         = new IpfsExperiment(jobs);
            var experimentWriteJob = new Ipfs();
            var experimentResult   = experimentWriteJob.Write(experiment);

            BlockChain chain = Camera.main.GetComponent <BlockChain>();

            owner.StartCoroutine(chain.AddExperiment(experimentResult.Hash, jobs));
            experiments.Add(experimentResult.Hash);

            return(experimentResult.Hash);
        }
コード例 #4
0
ファイル: Grid.cs プロジェクト: RobSalzwedel/OpenMined
        public void TrainModel(MonoBehaviour owner, string input, string target, IpfsJob job, int modelId)
        {
            var tmpInput  = Ipfs.Get <JToken>(input);
            var tmpTarget = Ipfs.Get <JToken>(target);

            var seq = CreateSequential(job.Model);

            var inputData   = tmpInput.SelectToken("data").ToObject <float[]>();
            var inputShape  = tmpInput.SelectToken("shape").ToObject <int[]>();
            var inputTensor = controller.floatTensorFactory.Create(_data: inputData, _shape: inputShape, _autograd: true);

            var targetData   = tmpTarget.SelectToken("data").ToObject <float[]>();
            var targetShape  = tmpTarget.SelectToken("shape").ToObject <int[]>();
            var targetTensor = controller.floatTensorFactory.Create(_data: targetData, _shape: targetShape, _autograd: true);

            var grad = controller.floatTensorFactory.Create(_data: new float[] { 1, 1, 1, 1 },
                                                            _shape: new int[] { 4, 1 });

            // 10 epochs .. make configurable
            for (var i = 0; i < 10; ++i)
            {
                var pred = seq.Forward(inputTensor);

                var loss = pred.Sub(targetTensor).Pow(2);
                loss.Backward(grad);

                foreach (var p in seq.getParameters())
                {
                    var pTensor = controller.floatTensorFactory.Get(p);
                    pTensor.Sub(pTensor.Grad, inline: true);
                }
            }

            var resultJob = new Ipfs();
            var config    = new IpfsJobConfig(job.config.lr);
            var response  = resultJob.Write(new IpfsJob(seq.GetConfig(), config));

            var req = new Request();

            owner.StartCoroutine(req.AddWeights(owner, modelId, response.Hash));
        }
コード例 #5
0
ファイル: Grid.cs プロジェクト: RobSalzwedel/OpenMined
 public IpfsJob(JToken model, IpfsJobConfig config)
 {
     this.Model  = model;
     this.config = config;
 }