From b084ae6dbf69a69d9b85513504e4f3d8d60e0e26 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Tue, 25 Dec 2018 07:44:19 -0600 Subject: [PATCH] reorganize file structure --- .../{ => Buffers}/Buffer.cs | 0 .../{Tensorflow => Buffers}/TF_Buffer.cs | 0 .../Buffers/c_api.buffer.cs | 13 ++ src/TensorFlowNET.Core/{ => Graphs}/Graph.cs | 0 .../{Tensorflow => Graphs}/TF_Input.cs | 0 .../{Tensorflow => Graphs}/TF_Output.cs | 0 src/TensorFlowNET.Core/Graphs/c_api.graph.cs | 16 ++ .../MonoPInvokeCallbackAttribute.cs | 16 -- .../{ => Operations}/OpDefLibrary.cs | 0 .../{ => Operations}/Operation.cs | 0 .../TF_OperationDescription.cs | 0 .../Operations/c_api.ops.cs | 36 +++++ .../{ops => Operations}/gen_array_ops.cs | 0 .../{ops => Operations}/gen_math_ops.cs | 0 .../{ => Operations}/ops.cs | 0 .../{Tensorflow => Protobuf}/AttrValue.cs | 0 .../{Tensorflow => Protobuf}/NodeDef.cs | 0 .../{Tensorflow => Protobuf}/OpDef.cs | 0 .../{Tensorflow => Protobuf}/README.md | 0 .../ResourceHandle.cs | 0 .../{Tensorflow => Protobuf}/Tensor.cs | 0 .../{Tensorflow => Protobuf}/TensorShape.cs | 0 .../{Tensorflow => Protobuf}/Types.cs | 0 .../op_list_proto_array.bin | Bin .../op_list_proto_math.bin | Bin .../{Session => Sessions}/BaseSession.cs | 0 .../{Session => Sessions}/Session.cs | 0 .../_ElementFetchMapper.cs | 0 .../{Session => Sessions}/_FetchHandler.cs | 0 .../{Session => Sessions}/_FetchMapper.cs | 0 .../Sessions/c_api.session.cs | 59 +++++++ src/TensorFlowNET.Core/{ => Status}/Status.cs | 0 .../{Tensorflow => Status}/TF_Code.cs | 0 src/TensorFlowNET.Core/Status/c_api.status.cs | 52 ++++++ .../TensorFlowNET.Core.csproj | 6 +- .../{ => Tensors}/TensorShape.cs | 0 .../Tensors/c_api.tensor.cs | 81 ++++++++++ src/TensorFlowNET.Core/c_api.cs | 152 +----------------- 38 files changed, 267 insertions(+), 164 deletions(-) rename src/TensorFlowNET.Core/{ => Buffers}/Buffer.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Buffers}/TF_Buffer.cs (100%) create mode 100644 src/TensorFlowNET.Core/Buffers/c_api.buffer.cs rename src/TensorFlowNET.Core/{ => Graphs}/Graph.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Graphs}/TF_Input.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Graphs}/TF_Output.cs (100%) create mode 100644 src/TensorFlowNET.Core/Graphs/c_api.graph.cs delete mode 100644 src/TensorFlowNET.Core/MonoPInvokeCallbackAttribute.cs rename src/TensorFlowNET.Core/{ => Operations}/OpDefLibrary.cs (100%) rename src/TensorFlowNET.Core/{ => Operations}/Operation.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Operations}/TF_OperationDescription.cs (100%) create mode 100644 src/TensorFlowNET.Core/Operations/c_api.ops.cs rename src/TensorFlowNET.Core/{ops => Operations}/gen_array_ops.cs (100%) rename src/TensorFlowNET.Core/{ops => Operations}/gen_math_ops.cs (100%) rename src/TensorFlowNET.Core/{ => Operations}/ops.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/AttrValue.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/NodeDef.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/OpDef.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/README.md (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/ResourceHandle.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/Tensor.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/TensorShape.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/Types.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/op_list_proto_array.bin (100%) rename src/TensorFlowNET.Core/{Tensorflow => Protobuf}/op_list_proto_math.bin (100%) rename src/TensorFlowNET.Core/{Session => Sessions}/BaseSession.cs (100%) rename src/TensorFlowNET.Core/{Session => Sessions}/Session.cs (100%) rename src/TensorFlowNET.Core/{Session => Sessions}/_ElementFetchMapper.cs (100%) rename src/TensorFlowNET.Core/{Session => Sessions}/_FetchHandler.cs (100%) rename src/TensorFlowNET.Core/{Session => Sessions}/_FetchMapper.cs (100%) create mode 100644 src/TensorFlowNET.Core/Sessions/c_api.session.cs rename src/TensorFlowNET.Core/{ => Status}/Status.cs (100%) rename src/TensorFlowNET.Core/{Tensorflow => Status}/TF_Code.cs (100%) create mode 100644 src/TensorFlowNET.Core/Status/c_api.status.cs rename src/TensorFlowNET.Core/{ => Tensors}/TensorShape.cs (100%) create mode 100644 src/TensorFlowNET.Core/Tensors/c_api.tensor.cs diff --git a/src/TensorFlowNET.Core/Buffer.cs b/src/TensorFlowNET.Core/Buffers/Buffer.cs similarity index 100% rename from src/TensorFlowNET.Core/Buffer.cs rename to src/TensorFlowNET.Core/Buffers/Buffer.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/TF_Buffer.cs b/src/TensorFlowNET.Core/Buffers/TF_Buffer.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/TF_Buffer.cs rename to src/TensorFlowNET.Core/Buffers/TF_Buffer.cs diff --git a/src/TensorFlowNET.Core/Buffers/c_api.buffer.cs b/src/TensorFlowNET.Core/Buffers/c_api.buffer.cs new file mode 100644 index 00000000..0cc081c2 --- /dev/null +++ b/src/TensorFlowNET.Core/Buffers/c_api.buffer.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tensorflow +{ + public static partial class c_api + { + [DllImport(TensorFlowLibName)] + public static extern string TF_GetBuffer(IntPtr buffer); + } +} diff --git a/src/TensorFlowNET.Core/Graph.cs b/src/TensorFlowNET.Core/Graphs/Graph.cs similarity index 100% rename from src/TensorFlowNET.Core/Graph.cs rename to src/TensorFlowNET.Core/Graphs/Graph.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/TF_Input.cs b/src/TensorFlowNET.Core/Graphs/TF_Input.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/TF_Input.cs rename to src/TensorFlowNET.Core/Graphs/TF_Input.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/TF_Output.cs b/src/TensorFlowNET.Core/Graphs/TF_Output.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/TF_Output.cs rename to src/TensorFlowNET.Core/Graphs/TF_Output.cs diff --git a/src/TensorFlowNET.Core/Graphs/c_api.graph.cs b/src/TensorFlowNET.Core/Graphs/c_api.graph.cs new file mode 100644 index 00000000..337fdea9 --- /dev/null +++ b/src/TensorFlowNET.Core/Graphs/c_api.graph.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tensorflow +{ + public static partial class c_api + { + [DllImport(TensorFlowLibName)] + public static extern void TF_GraphGetOpDef(IntPtr graph, string op_name, IntPtr output_op_def, IntPtr status); + + [DllImport(TensorFlowLibName)] + public static unsafe extern IntPtr TF_NewGraph(); + } +} diff --git a/src/TensorFlowNET.Core/MonoPInvokeCallbackAttribute.cs b/src/TensorFlowNET.Core/MonoPInvokeCallbackAttribute.cs deleted file mode 100644 index 201e92c8..00000000 --- a/src/TensorFlowNET.Core/MonoPInvokeCallbackAttribute.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Tensorflow -{ - public sealed class MonoPInvokeCallbackAttribute : Attribute - { - /// - /// Use this constructor to annotate the type of the callback function that - /// will be invoked from unmanaged code. - /// - /// T. - public MonoPInvokeCallbackAttribute(Type t) { } - } -} diff --git a/src/TensorFlowNET.Core/OpDefLibrary.cs b/src/TensorFlowNET.Core/Operations/OpDefLibrary.cs similarity index 100% rename from src/TensorFlowNET.Core/OpDefLibrary.cs rename to src/TensorFlowNET.Core/Operations/OpDefLibrary.cs diff --git a/src/TensorFlowNET.Core/Operation.cs b/src/TensorFlowNET.Core/Operations/Operation.cs similarity index 100% rename from src/TensorFlowNET.Core/Operation.cs rename to src/TensorFlowNET.Core/Operations/Operation.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/TF_OperationDescription.cs b/src/TensorFlowNET.Core/Operations/TF_OperationDescription.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/TF_OperationDescription.cs rename to src/TensorFlowNET.Core/Operations/TF_OperationDescription.cs diff --git a/src/TensorFlowNET.Core/Operations/c_api.ops.cs b/src/TensorFlowNET.Core/Operations/c_api.ops.cs new file mode 100644 index 00000000..0422aa75 --- /dev/null +++ b/src/TensorFlowNET.Core/Operations/c_api.ops.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tensorflow +{ + public static partial class c_api + { + /// + /// For inputs that take a single tensor. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static unsafe extern void TF_AddInput(TF_OperationDescription desc, TF_Output input); + + [DllImport(TensorFlowLibName)] + public static unsafe extern IntPtr TF_FinishOperation(TF_OperationDescription desc, IntPtr status); + + [DllImport(TensorFlowLibName)] + public static unsafe extern TF_OperationDescription TF_NewOperation(IntPtr graph, string opType, string oper_name); + + [DllImport(TensorFlowLibName)] + public static extern unsafe int TF_OperationNumOutputs(IntPtr oper); + + [DllImport(TensorFlowLibName)] + public static extern unsafe void TF_SetAttrValueProto(TF_OperationDescription desc, string attr_name, IntPtr proto, UIntPtr proto_len, IntPtr status); + + [DllImport(TensorFlowLibName)] + public static extern unsafe void TF_SetAttrTensor(TF_OperationDescription desc, string attr_name, IntPtr value, IntPtr status); + + [DllImport(TensorFlowLibName)] + public static extern unsafe void TF_SetAttrType(TF_OperationDescription desc, string attr_name, TF_DataType value); + } +} diff --git a/src/TensorFlowNET.Core/ops/gen_array_ops.cs b/src/TensorFlowNET.Core/Operations/gen_array_ops.cs similarity index 100% rename from src/TensorFlowNET.Core/ops/gen_array_ops.cs rename to src/TensorFlowNET.Core/Operations/gen_array_ops.cs diff --git a/src/TensorFlowNET.Core/ops/gen_math_ops.cs b/src/TensorFlowNET.Core/Operations/gen_math_ops.cs similarity index 100% rename from src/TensorFlowNET.Core/ops/gen_math_ops.cs rename to src/TensorFlowNET.Core/Operations/gen_math_ops.cs diff --git a/src/TensorFlowNET.Core/ops.cs b/src/TensorFlowNET.Core/Operations/ops.cs similarity index 100% rename from src/TensorFlowNET.Core/ops.cs rename to src/TensorFlowNET.Core/Operations/ops.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/AttrValue.cs b/src/TensorFlowNET.Core/Protobuf/AttrValue.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/AttrValue.cs rename to src/TensorFlowNET.Core/Protobuf/AttrValue.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/NodeDef.cs b/src/TensorFlowNET.Core/Protobuf/NodeDef.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/NodeDef.cs rename to src/TensorFlowNET.Core/Protobuf/NodeDef.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/OpDef.cs b/src/TensorFlowNET.Core/Protobuf/OpDef.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/OpDef.cs rename to src/TensorFlowNET.Core/Protobuf/OpDef.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/README.md b/src/TensorFlowNET.Core/Protobuf/README.md similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/README.md rename to src/TensorFlowNET.Core/Protobuf/README.md diff --git a/src/TensorFlowNET.Core/Tensorflow/ResourceHandle.cs b/src/TensorFlowNET.Core/Protobuf/ResourceHandle.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/ResourceHandle.cs rename to src/TensorFlowNET.Core/Protobuf/ResourceHandle.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/Tensor.cs b/src/TensorFlowNET.Core/Protobuf/Tensor.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/Tensor.cs rename to src/TensorFlowNET.Core/Protobuf/Tensor.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/TensorShape.cs b/src/TensorFlowNET.Core/Protobuf/TensorShape.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/TensorShape.cs rename to src/TensorFlowNET.Core/Protobuf/TensorShape.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/Types.cs b/src/TensorFlowNET.Core/Protobuf/Types.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/Types.cs rename to src/TensorFlowNET.Core/Protobuf/Types.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/op_list_proto_array.bin b/src/TensorFlowNET.Core/Protobuf/op_list_proto_array.bin similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/op_list_proto_array.bin rename to src/TensorFlowNET.Core/Protobuf/op_list_proto_array.bin diff --git a/src/TensorFlowNET.Core/Tensorflow/op_list_proto_math.bin b/src/TensorFlowNET.Core/Protobuf/op_list_proto_math.bin similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/op_list_proto_math.bin rename to src/TensorFlowNET.Core/Protobuf/op_list_proto_math.bin diff --git a/src/TensorFlowNET.Core/Session/BaseSession.cs b/src/TensorFlowNET.Core/Sessions/BaseSession.cs similarity index 100% rename from src/TensorFlowNET.Core/Session/BaseSession.cs rename to src/TensorFlowNET.Core/Sessions/BaseSession.cs diff --git a/src/TensorFlowNET.Core/Session/Session.cs b/src/TensorFlowNET.Core/Sessions/Session.cs similarity index 100% rename from src/TensorFlowNET.Core/Session/Session.cs rename to src/TensorFlowNET.Core/Sessions/Session.cs diff --git a/src/TensorFlowNET.Core/Session/_ElementFetchMapper.cs b/src/TensorFlowNET.Core/Sessions/_ElementFetchMapper.cs similarity index 100% rename from src/TensorFlowNET.Core/Session/_ElementFetchMapper.cs rename to src/TensorFlowNET.Core/Sessions/_ElementFetchMapper.cs diff --git a/src/TensorFlowNET.Core/Session/_FetchHandler.cs b/src/TensorFlowNET.Core/Sessions/_FetchHandler.cs similarity index 100% rename from src/TensorFlowNET.Core/Session/_FetchHandler.cs rename to src/TensorFlowNET.Core/Sessions/_FetchHandler.cs diff --git a/src/TensorFlowNET.Core/Session/_FetchMapper.cs b/src/TensorFlowNET.Core/Sessions/_FetchMapper.cs similarity index 100% rename from src/TensorFlowNET.Core/Session/_FetchMapper.cs rename to src/TensorFlowNET.Core/Sessions/_FetchMapper.cs diff --git a/src/TensorFlowNET.Core/Sessions/c_api.session.cs b/src/TensorFlowNET.Core/Sessions/c_api.session.cs new file mode 100644 index 00000000..49c32890 --- /dev/null +++ b/src/TensorFlowNET.Core/Sessions/c_api.session.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tensorflow +{ + public static partial class c_api + { + /// + /// Destroy an options object. + /// + /// + [DllImport(TensorFlowLibName)] + public static unsafe extern void TF_DeleteSessionOptions(IntPtr opts); + + /// + /// Return a new execution session with the associated graph, or NULL on + /// error. Does not take ownership of any input parameters. + /// + /// + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern IntPtr TF_NewSession(IntPtr graph, IntPtr opts, IntPtr status); + + /// + /// Return a new options object. + /// + /// + [DllImport(TensorFlowLibName)] + public static extern IntPtr TF_NewSessionOptions(); + + /// + /// Run the graph associated with the session starting with the supplied inputs + /// (inputs[0,ninputs-1] with corresponding values in input_values[0,ninputs-1]). + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe void TF_SessionRun(IntPtr session, IntPtr run_options, + TF_Output[] inputs, IntPtr[] input_values, int ninputs, + TF_Output[] outputs, IntPtr[] output_values, int noutputs, + IntPtr[] target_opers, int ntargets, + IntPtr run_metadata, + IntPtr status); + } +} diff --git a/src/TensorFlowNET.Core/Status.cs b/src/TensorFlowNET.Core/Status/Status.cs similarity index 100% rename from src/TensorFlowNET.Core/Status.cs rename to src/TensorFlowNET.Core/Status/Status.cs diff --git a/src/TensorFlowNET.Core/Tensorflow/TF_Code.cs b/src/TensorFlowNET.Core/Status/TF_Code.cs similarity index 100% rename from src/TensorFlowNET.Core/Tensorflow/TF_Code.cs rename to src/TensorFlowNET.Core/Status/TF_Code.cs diff --git a/src/TensorFlowNET.Core/Status/c_api.status.cs b/src/TensorFlowNET.Core/Status/c_api.status.cs new file mode 100644 index 00000000..efd2a959 --- /dev/null +++ b/src/TensorFlowNET.Core/Status/c_api.status.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tensorflow +{ + public static partial class c_api + { + /// + /// Delete a previously created status object. + /// + /// + [DllImport(TensorFlowLibName)] + public static unsafe extern void TF_DeleteStatus(IntPtr s); + + /// + /// Return the code record in *s. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe TF_Code TF_GetCode(IntPtr s); + + /// + /// Return a pointer to the (null-terminated) error message in *s. + /// The return value points to memory that is only usable until the next + /// mutation to *s. Always returns an empty string if TF_GetCode(s) is TF_OK. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe string TF_Message(IntPtr s); + + /// + /// Return a new status object. + /// + /// + [DllImport(TensorFlowLibName)] + public static unsafe extern IntPtr TF_NewStatus(); + + /// + /// Record in *s. Any previous information is lost. + /// A common use is to clear a status: TF_SetStatus(s, TF_OK, ""); + /// + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern void TF_SetStatus(IntPtr s, TF_Code code, string msg); + } +} diff --git a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj index bf591c6c..8689e8c9 100644 --- a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj +++ b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj @@ -12,7 +12,7 @@ - + @@ -27,10 +27,10 @@ PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/src/TensorFlowNET.Core/TensorShape.cs b/src/TensorFlowNET.Core/Tensors/TensorShape.cs similarity index 100% rename from src/TensorFlowNET.Core/TensorShape.cs rename to src/TensorFlowNET.Core/Tensors/TensorShape.cs diff --git a/src/TensorFlowNET.Core/Tensors/c_api.tensor.cs b/src/TensorFlowNET.Core/Tensors/c_api.tensor.cs new file mode 100644 index 00000000..a99d14bb --- /dev/null +++ b/src/TensorFlowNET.Core/Tensors/c_api.tensor.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tensorflow +{ + public static partial class c_api + { + /// + /// returns the sizeof() for the underlying type corresponding to the given TF_DataType enum value. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static unsafe extern ulong TF_DataTypeSize(TF_DataType dt); + + /// + /// Destroy a tensor. + /// + /// + [DllImport(TensorFlowLibName)] + public static unsafe extern void TF_DeleteTensor(IntPtr tensor); + + /// + /// Return the length of the tensor in the "dim_index" dimension. + /// REQUIRES: 0 <= dim_index < TF_NumDims(tensor) + /// + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe long TF_Dim(IntPtr tensor, int dim_index); + + /// + /// Return a new tensor that holds the bytes data[0,len-1] + /// + /// + /// + /// + /// + /// num_bytes, ex: 6 * sizeof(float) + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe IntPtr TF_NewTensor(TF_DataType dataType, long[] dims, int num_dims, IntPtr data, UIntPtr len, Deallocator deallocator, ref bool deallocator_arg); + + /// + /// Return the number of dimensions that the tensor has. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe int TF_NumDims(IntPtr tensor); + + /// + /// Return the size of the underlying data in bytes. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe ulong TF_TensorByteSize(IntPtr tensor); + + /// + /// Return a pointer to the underlying data buffer. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe IntPtr TF_TensorData(IntPtr tensor); + + /// + /// Return the type of a tensor element. + /// + /// + /// + [DllImport(TensorFlowLibName)] + public static extern unsafe TF_DataType TF_TensorType(IntPtr tensor); + } +} diff --git a/src/TensorFlowNET.Core/c_api.cs b/src/TensorFlowNET.Core/c_api.cs index f31553b6..bb49a049 100644 --- a/src/TensorFlowNET.Core/c_api.cs +++ b/src/TensorFlowNET.Core/c_api.cs @@ -5,156 +5,18 @@ using System.Text; namespace Tensorflow { - public static class c_api + /// + /// C API for TensorFlow. + /// + /// The API leans towards simplicity and uniformity instead of convenience + /// since most usage will be by language specific wrappers. + /// + public static partial class c_api { public const string TensorFlowLibName = "tensorflow"; - /// - /// For inputs that take a single tensor. - /// - /// - /// - [DllImport(TensorFlowLibName)] - public static unsafe extern void TF_AddInput(TF_OperationDescription desc, TF_Output input); - - /// - /// returns the sizeof() for the underlying type corresponding to the given TF_DataType enum value. - /// - /// - /// - [DllImport(TensorFlowLibName)] - public static unsafe extern ulong TF_DataTypeSize(TF_DataType dt); - - [DllImport(TensorFlowLibName)] - public static unsafe extern void TF_DeleteSessionOptions(IntPtr opts); - - /// - /// Delete a previously created status object. - /// - /// - [DllImport(TensorFlowLibName)] - public static unsafe extern void TF_DeleteStatus(IntPtr s); - - /// - /// Destroy a tensor. - /// - /// - [DllImport(TensorFlowLibName)] - public static unsafe extern void TF_DeleteTensor(IntPtr tensor); - - [DllImport(TensorFlowLibName)] - public static extern unsafe long TF_Dim(IntPtr tensor, int dim_index); - - [DllImport(TensorFlowLibName)] - public static unsafe extern IntPtr TF_FinishOperation(TF_OperationDescription desc, IntPtr status); - - [DllImport(TensorFlowLibName)] - public static extern string TF_GetBuffer(IntPtr buffer); - - [DllImport(TensorFlowLibName)] - public static extern unsafe TF_Code TF_GetCode(IntPtr s); - - [DllImport(TensorFlowLibName)] - public static extern void TF_GraphGetOpDef(IntPtr graph, string op_name, IntPtr output_op_def, IntPtr status); - - [DllImport(TensorFlowLibName)] - public static extern unsafe string TF_Message(IntPtr s); - - [DllImport(TensorFlowLibName)] - public static unsafe extern IntPtr TF_NewGraph(); - - [DllImport(TensorFlowLibName)] - public static unsafe extern TF_OperationDescription TF_NewOperation(IntPtr graph, string opType, string oper_name); - - /// - /// Return a new status object. - /// - /// - [DllImport(TensorFlowLibName)] - public static unsafe extern IntPtr TF_NewStatus(); - - /// - /// Return a new tensor that holds the bytes data[0,len-1] - /// - /// - /// - /// - /// - /// num_bytes, ex: 6 * sizeof(float) - /// - /// - /// - [DllImport(TensorFlowLibName)] - public static extern unsafe IntPtr TF_NewTensor(TF_DataType dataType, long[] dims, int num_dims, IntPtr data, UIntPtr len, Deallocator deallocator, ref bool deallocator_arg); - public delegate void Deallocator(IntPtr data, IntPtr size, ref bool deallocatorData); - /// - /// Return the number of dimensions that the tensor has. - /// - /// - /// - [DllImport(TensorFlowLibName)] - public static extern unsafe int TF_NumDims(IntPtr tensor); - - [DllImport(TensorFlowLibName)] - public static extern unsafe int TF_OperationNumOutputs(IntPtr oper); - - [DllImport(TensorFlowLibName)] - public static extern unsafe void TF_SetAttrValueProto(TF_OperationDescription desc, string attr_name, IntPtr proto, UIntPtr proto_len, IntPtr status); - - [DllImport(TensorFlowLibName)] - public static extern unsafe void TF_SetAttrTensor(TF_OperationDescription desc, string attr_name, IntPtr value, IntPtr status); - - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - [DllImport(TensorFlowLibName)] - public static extern unsafe void TF_SessionRun(IntPtr session, IntPtr run_options, - TF_Output[] inputs, IntPtr[] input_values, int ninputs, - TF_Output[] outputs, IntPtr[] output_values, int noutputs, - IntPtr[] target_opers, int ntargets, - IntPtr run_metadata, - IntPtr status); - - [DllImport(TensorFlowLibName)] - public static extern unsafe void TF_SetAttrType(TF_OperationDescription desc, string attr_name, TF_DataType value); - - [DllImport(TensorFlowLibName)] - public static extern void TF_SetStatus(IntPtr s, TF_Code code, string msg); - - /// - /// Return the size of the underlying data in bytes. - /// - /// - /// - [DllImport(TensorFlowLibName)] - public static extern unsafe ulong TF_TensorByteSize(IntPtr tensor); - - [DllImport(TensorFlowLibName)] - public static extern unsafe IntPtr TF_TensorData(IntPtr tensor); - - [DllImport(TensorFlowLibName)] - public static extern unsafe TF_DataType TF_TensorType(IntPtr tensor); - - [DllImport(TensorFlowLibName)] - public static extern IntPtr TF_NewSession(IntPtr graph, IntPtr opts, IntPtr status); - - [DllImport(TensorFlowLibName)] - public static extern IntPtr TF_NewSessionOptions(); - [DllImport(TensorFlowLibName)] public static unsafe extern IntPtr TF_Version(); }