using BenchmarkDotNet.Attributes; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using Tensorflow.NumPy; using static Tensorflow.Binding; namespace Tensorflow.Benchmark.Leak { /// /// https://github.com/SciSharp/TensorFlow.NET/issues/418 /// public class SavedModelCleanup { [Benchmark] public void Run() { var modelDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var ClassifierModelPath = Path.Combine(modelDir, "Leak", "TestModel", "saved_model"); for (var i = 0; i < 1024; i++) { var sess = Session.LoadFromSavedModel(ClassifierModelPath); var g = sess.graph.as_default(); var inputOp = g.OperationByName("inference_input"); var outputOp = g.OperationByName("StatefulPartitionedCall"); var inp = np.zeros(new Shape(new int[] { 1, 2, 96 }), TF_DataType.TF_FLOAT); sess.run(outputOp.outputs[0], new FeedItem(inputOp.outputs[0], inp)); } } } }