Browse Source

have to invoke pywrap_tfe_src.cc

tags/v0.1.0-Tensor
haiping008 6 years ago
parent
commit
ba499ab001
7 changed files with 40 additions and 25 deletions
  1. +15
    -3
      src/TensorFlowNET.Core/APIs/tf.math.cs
  2. +2
    -0
      src/TensorFlowNET.Core/Gradients/gradients_impl.py.cs
  3. +1
    -1
      src/TensorFlowNET.Core/Operations/Operation.cs
  4. +7
    -14
      src/TensorFlowNET.Core/Operations/gen_math_ops.cs
  5. +0
    -3
      src/TensorFlowNET.Core/Variables/RefVariable.cs
  6. +6
    -1
      src/TensorFlowNET.Core/ops.name_scope.cs
  7. +9
    -3
      src/TensorFlowNET.Core/ops.py.cs

+ 15
- 3
src/TensorFlowNET.Core/APIs/tf.math.cs View File

@@ -35,13 +35,25 @@ namespace Tensorflow
public static Tensor reduce_sum(Tensor input, int[] axis = null)
{
Tensor rank;
string name;
using (var namescop = new ops.name_scope<Tensor>("", "Rank", new List<Tensor> { input }))
{
string name = namescop;
rank = gen_array_ops.rank(input, name);
name = namescop;
rank = gen_array_ops.rank(input, namescop);
}

using (var namescope = new ops.name_scope<Tensor>("range", "Range", new List<Tensor> { 0D, input, 1D }))
{
name = namescope;
var start = ops.convert_to_tensor(0D);
var limit = ops.convert_to_tensor(input);
var delta = ops.convert_to_tensor(1D);

var t = gen_math_ops.range(start, limit, delta, name);
}
var s = gen_math_ops.sum(input, rank);
return gen_math_ops.range(0, s);
return s;
}
}
}

+ 2
- 0
src/TensorFlowNET.Core/Gradients/gradients_impl.py.cs View File

@@ -57,6 +57,8 @@ namespace Tensorflow
// cluster ops for compilation.
var gradient_uid = ops.get_default_graph().unique_name("uid");

// Initialize the pending count for ops in the connected subgraph from ys
// to the xs.
var to_ops = ys1.Select(x => x.op).ToList();
var from_ops = xs1.Select(x => x.op).ToList();
var stop_gradient_ops = stop_gradients1.Select(x => x.op).ToList();


+ 1
- 1
src/TensorFlowNET.Core/Operations/Operation.cs View File

@@ -163,7 +163,7 @@ namespace Tensorflow

public override string ToString()
{
return $"'{Name}' type={OpType}";
return _handle == IntPtr.Zero ? "Undefined" : $"'{Name}' type={OpType}";
}

public static implicit operator Operation(IntPtr handle) => new Operation(handle);


+ 7
- 14
src/TensorFlowNET.Core/Operations/gen_math_ops.cs View File

@@ -98,23 +98,16 @@ namespace Tensorflow
/// <param name="delta"></param>
/// <param name="name"></param>
/// <returns></returns>
public static Tensor range(int start, Tensor limit, int delta = 1)
public static Tensor range(Tensor start, Tensor limit, Tensor delta, string name = "")
{
using (var namescope = new ops.name_scope<Tensor>("", "Range", new List<Tensor> { start, limit, delta }))
{
var start1 = ops.convert_to_tensor(start, "start");
var limit1 = ops.convert_to_tensor(limit, "limit");
var delta1 = ops.convert_to_tensor(delta, "delta");

var keywords = new Dictionary<string, object>();
keywords.Add("start", start1);
keywords.Add("limit", limit1);
keywords.Add("delta", delta1);
var keywords = new Dictionary<string, object>();
keywords.Add("start", start);
keywords.Add("limit", limit);
keywords.Add("delta", delta);

var _op = _op_def_lib._apply_op_helper("Range", namescope, keywords);
var _op = _op_def_lib._apply_op_helper("Range", name, keywords);

return _op.outputs[0];
}
return _op.outputs[0];
}
}
}

+ 0
- 3
src/TensorFlowNET.Core/Variables/RefVariable.cs View File

@@ -91,9 +91,6 @@ namespace Tensorflow
_snapshot = gen_array_ops.identity(_variable, name = "read");
}

// clear g._name_stack
ops.get_default_graph().old_stack = "";

ops.add_to_collections(collections, this);
}
}


+ 6
- 1
src/TensorFlowNET.Core/ops.name_scope.cs View File

@@ -46,6 +46,8 @@ namespace Tensorflow
{
var g = get_default_graph();
g._name_stack = g.old_stack;
// clear g._name_stack
g.old_stack = "";
}

/// <summary>
@@ -54,7 +56,10 @@ namespace Tensorflow
/// <param name="ns"></param>
public static implicit operator string(name_scope<T> ns)
{
return ns.__enter__();
if (string.IsNullOrEmpty(ns._name_scope))
return ns.__enter__();
else
return ns._name_scope;
}
}
}


+ 9
- 3
src/TensorFlowNET.Core/ops.py.cs View File

@@ -47,8 +47,14 @@ namespace Tensorflow

public static Tensor convert_to_tensor(object value, string name = "")
{
var nd = tensor_util.convert_to_numpy_ndarray(value);
return tf.constant(nd, name);
switch (value)
{
case Tensor val:
return val;
default:
var nd = tensor_util.convert_to_numpy_ndarray(value);
return tf.constant(nd, name);
}
}

public static unsafe IntPtr _create_c_op(Graph graph, NodeDef node_def, List<Tensor> inputs)
@@ -90,7 +96,7 @@ namespace Tensorflow

var c_op = c_api.TF_FinishOperation(op_desc, status);

if (status.Code != TF_Code.TF_OK) throw new Exception(status.Message);
status.Check(true);

return c_op;
}


Loading…
Cancel
Save