public TensorFlowOpLayer(TensorFlowOpLayerArgs args) : base(new LayerArgs { Name = TF_OP_LAYER_NAME_PREFIX + args.Name, Trainable = args.Trainable, DType = args.DType, Autocast = false }) { this.args = args; built = true; }
public TensorFlowOpLayer(TensorFlowOpLayerArgs args) : base(new LayerArgs { Name = "tf_op_layer_" + args.Name, Trainable = args.Trainable, DType = args.DType, Autocast = false }) { this.args = args; built = true; }
public static void CreateKerasHistoryHelper(Tensors tensors, List <Operation> processed_ops, List <Layer> created_layers) { foreach (var tensor in tensors) { if (tensor.KerasHistory != null) { continue; } var op = tensor.op; if (!processed_ops.Contains(op)) { var layer_inputs = new List <Tensor>(); var constants = new Dictionary <int, NDArray>(); foreach (var(i, op_input) in enumerate(op.inputs._inputs)) { if (uses_keras_history(op_input)) { layer_inputs.Add(op_input); } else { tf_with(ops.init_scope(), delegate { constants[i] = keras.backend.eval_in_eager_or_function(op_input); }); } } // recursively CreateKerasHistoryHelper(layer_inputs, processed_ops, created_layers); var opLayerArgs = new TensorFlowOpLayerArgs { NodeDef = op.node_def, Constants = constants, Name = op.name }; var op_layer = new TensorFlowOpLayer(opLayerArgs); created_layers.Add(op_layer); op_layer.SetConnectivityMetadata(layer_inputs, op.outputs); processed_ops.Add(op); } } }
public Layer GetOpLayer(TensorFlowOpLayerArgs args) => new TensorFlowOpLayer(args);