| @@ -138,10 +138,6 @@ namespace Tensorflow.Keras.Engine | |||||
| { | { | ||||
| nameScope = name; | nameScope = name; | ||||
| } | } | ||||
| else | |||||
| { | |||||
| throw new NotImplementedException(""); | |||||
| } | |||||
| // using var graph = tf.keras.backend.get_graph().as_default(); | // using var graph = tf.keras.backend.get_graph().as_default(); | ||||
| if (!inputs.IsEagerTensor) | if (!inputs.IsEagerTensor) | ||||
| @@ -83,20 +83,19 @@ namespace Tensorflow.Layers | |||||
| auxiliary_name_scope: false); | auxiliary_name_scope: false); | ||||
| } | } | ||||
| Tensor[] outputs = null; | |||||
| Tensor outputs = null; | |||||
| tf_with(scope_context_manager, scope2 => | tf_with(scope_context_manager, scope2 => | ||||
| { | { | ||||
| _current_scope = scope2; | _current_scope = scope2; | ||||
| // Actually call layer | // Actually call layer | ||||
| /*outputs = base.Apply(new Tensor[] { inputs }, | |||||
| is_training: training);*/ | |||||
| outputs = base.Apply(inputs); | |||||
| }); | }); | ||||
| // Update global default collections. | // Update global default collections. | ||||
| _add_elements_to_collection(updates.ToArray(), new string[] { tf.GraphKeys.UPDATE_OPS }); | _add_elements_to_collection(updates.ToArray(), new string[] { tf.GraphKeys.UPDATE_OPS }); | ||||
| return outputs; | |||||
| return new Tensor[] { outputs }; | |||||
| } | } | ||||
| protected virtual void _add_elements_to_collection(Operation[] elements, string[] collection_list) | protected virtual void _add_elements_to_collection(Operation[] elements, string[] collection_list) | ||||
| @@ -87,8 +87,8 @@ namespace Tensorflow | |||||
| // array_ops.split(value: state, num_or_size_splits: 2, axis: one); | // array_ops.split(value: state, num_or_size_splits: 2, axis: one); | ||||
| throw new NotImplementedException("BasicLstmCell call"); | throw new NotImplementedException("BasicLstmCell call"); | ||||
| } | } | ||||
| var gate_inputs = math_ops.matmul(array_ops.concat(new[] { inputs, h }, 1), _kernel as RefVariable); | |||||
| gate_inputs = nn_ops.bias_add(gate_inputs, _bias as RefVariable); | |||||
| var gate_inputs = math_ops.matmul(array_ops.concat(new[] { inputs, h }, 1), _kernel.AsTensor()); | |||||
| gate_inputs = nn_ops.bias_add(gate_inputs, _bias.AsTensor()); | |||||
| // i = input_gate, j = new_input, f = forget_gate, o = output_gate | // i = input_gate, j = new_input, f = forget_gate, o = output_gate | ||||
| var tensors = array_ops.split(value: gate_inputs, num_split: 4, axis: one); | var tensors = array_ops.split(value: gate_inputs, num_split: 4, axis: one); | ||||
| @@ -52,7 +52,7 @@ namespace TensorFlowNET.UnitTest.Keras | |||||
| // Create a `Sequential` model and add a Dense layer as the first layer. | // Create a `Sequential` model and add a Dense layer as the first layer. | ||||
| var model = tf.keras.Sequential(); | var model = tf.keras.Sequential(); | ||||
| model.add(tf.keras.Input(shape: 16)); | model.add(tf.keras.Input(shape: 16)); | ||||
| model.add(tf.keras.layers.Dense(32, activation: tf.keras.activations.Relu)); | |||||
| model.add(tf.keras.layers.Dense(32, activation: "relu")); | |||||
| // Now the model will take as input arrays of shape (None, 16) | // Now the model will take as input arrays of shape (None, 16) | ||||
| // and output arrays of shape (None, 32). | // and output arrays of shape (None, 32). | ||||
| // Note that after the first layer, you don't need to specify | // Note that after the first layer, you don't need to specify | ||||