forked from SciSharp/TensorFlow.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtf.cs
More file actions
80 lines (64 loc) · 2.31 KB
/
tf.cs
File metadata and controls
80 lines (64 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using TF_DataType = Tensorflow.DataType;
using attr_value_pb2 = Tensorflow;
using Tensorflow.Eager;
namespace Tensorflow
{
public static class tf
{
public static DataType float32 = DataType.DtFloat;
public static Context context = new Context();
public static Graph g = new Graph(c_api.TF_NewGraph());
public delegate void Deallocator(IntPtr data, IntPtr size, IntPtr deallocatorData);
public static unsafe Tensor add(Tensor a, Tensor b)
{
return gen_math_ops.add(a, b);
}
public static unsafe Tensor placeholder(DataType dtype, TensorShape shape = null)
{
return gen_array_ops.placeholder(dtype, shape);
}
public static unsafe Tensor constant(object value)
{
var g = ops.get_default_graph();
var tensor_value = new attr_value_pb2.AttrValue();
var tensor_pb = tensor_util.make_tensor_proto(value);
tensor_value.Tensor = tensor_pb;
var dtype_value = new attr_value_pb2.AttrValue
{
Type = tensor_value.Tensor.Dtype,
};
var attrs = new Dictionary<string, AttrValue>();
attrs["dtype"] = dtype_value;
attrs["value"] = tensor_value;
var const_tensor = g.create_op("Const", null, new TF_DataType[] { dtype_value.Type }, attrs: attrs).outputs[0];
return const_tensor;
}
public static void enable_eager_execution()
{
context.default_execution_mode = Context.EAGER_MODE;
}
public static Deallocator FreeTensorDataDelegate = FreeTensorData;
[MonoPInvokeCallback(typeof(Deallocator))]
internal static void FreeTensorData(IntPtr data, IntPtr len, IntPtr closure)
{
Marshal.FreeHGlobal(data);
}
public static string VERSION => Marshal.PtrToStringAnsi(c_api.TF_Version());
public static Graph get_default_graph()
{
return ops.get_default_graph();
}
public static Graph Graph()
{
return g;
}
public static Session Session()
{
return new Session();
}
}
}