Example #1
0
        public TFFunction(TensorFlowBackend k, List <Tensor> inputs, List <Tensor> outputs, List <List <Tensor> > updates, string name)
        {
            this.K  = k;
            this.tf = k.tf;

            if (updates == null)
            {
                updates = new List <List <Tensor> >();
            }
            this.inputs  = inputs;
            this.outputs = outputs;
            {
                var updates_ops = new List <TFOperation>();
                foreach (List <Tensor> update in updates)
                {
                    if (update.Count == 2)
                    {
                        var p     = K.In(update[0]);
                        var new_p = K.In(update[1]);
                        updates_ops.Add(tf.Assign(p, new_p).Operation);
                    }
                    else if (update.Count == 1)
                    {
                        // assumed already an op
                        updates_ops.Add(K.In(update[0]).output.Operation);
                    }
                    else
                    {
                        throw new NotSupportedException();
                    }
                }

                //this.updates_op = tf.group(updates_ops);
                this.updates_op = updates_ops;
            }

            this.name = name;
            //this.session_kwargs = session_kwargs;
        }