コード例 #1
0
        public FilterDataset(IDatasetV2 input_dataset,
                             Func <Tensor, bool> predicate_func) : base(input_dataset)
        {
            Func <Tensors, Tensors> predicate_func_update = x =>
            {
                var result = predicate_func(x);
                return(constant_op.constant(result));
            };

            var func = new ConcreteFunction($"{predicate_func.Method.Name}_{Tensorflow.ops.uid_function()}");

            func.Enter();
            var inputs = new Tensors();

            foreach (var input in input_dataset.element_spec)
            {
                inputs.Add(tf.placeholder(input.dtype, shape: input.shape, name: "arg"));
            }
            var outputs = predicate_func_update(inputs);

            func.ToGraph(inputs, outputs);
            func.Exit();

            structure = func.OutputStructure;

            variant_tensor = ops.filter_dataset(input_dataset.variant_tensor,
                                                func,
                                                output_types,
                                                output_shapes);
        }
コード例 #2
0
ファイル: MapDataset.cs プロジェクト: samuelcaldas/PPO.NETv2
        public MapDataset(IDatasetV2 input_dataset,
                          Func <Tensors, Tensors> map_func,
                          bool use_inter_op_parallelism = true,
                          bool preserve_cardinality     = false,
                          bool use_legacy_function      = false) : base(input_dataset)
        {
            var func = new ConcreteFunction($"{map_func.Method.Name}_{Tensorflow.ops.uid_function()}");

            func.Enter();
            var inputs = new Tensors();

            foreach (var input in input_dataset.element_spec)
            {
                inputs.Add(tf.placeholder(input.dtype, shape: input.shape, name: "arg"));
            }
            var outputs = map_func(inputs);

            func.ToGraph(inputs, outputs);
            func.Exit();

            structure = func.OutputStructure;

            variant_tensor = ops.map_dataset(input_dataset.variant_tensor,
                                             func,
                                             output_types,
                                             output_shapes,
                                             use_inter_op_parallelism: use_inter_op_parallelism,
                                             preserve_cardinality: preserve_cardinality);
        }
コード例 #3
0
        public static (Tensors, Tensor) clip_by_global_norm(Tensor[] t_list, float clip_norm, Tensor use_norm = null, string name = null)
        {
            use_norm = global_norm(t_list, name);
            return(tf_with(ops.name_scope(name, "clip_by_global_norm", t_list), delegate
            {
                // Calculate L2-norm, clip elements by ratio of clip_norm to L2-norm
                var scale_for_finite = clip_norm * math_ops.minimum(
                    1.0f / use_norm,
                    constant_op.constant(1.0, dtype: use_norm.dtype) / clip_norm);

                // If use_norm is any finite number, this is a no-op. For inf/-inf/NaN,
                // this will make scale NaN.
                var scale = scale_for_finite + (use_norm - use_norm);

                Tensors values_clipped = new Tensors();
                foreach (var(i, v) in enumerate(t_list))
                {
                    values_clipped.Add(array_ops.identity(v * scale, name: $"{name}_{i}"));
                }
                return (values_clipped, use_norm);
            }));