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); }
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); }
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); }));