| @@ -0,0 +1,52 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Text; | |||||
| using Tensorflow.Keras.Layers; | |||||
| using NumSharp; | |||||
| using Tensorflow.Keras; | |||||
| using static Tensorflow.Binding; | |||||
| using static Tensorflow.KerasApi; | |||||
| namespace Tensorflow.Benchmark.Leak | |||||
| { | |||||
| class GpuLeakByCNN | |||||
| { | |||||
| protected static LayersApi layers = new LayersApi(); | |||||
| public static void Test() | |||||
| { | |||||
| int num = 50, width = 64, height = 64; | |||||
| // if width = 128, height = 128, the exception occurs faster | |||||
| var bytes = new byte[num * width * height * 3]; | |||||
| var inputImages = np.array(bytes) / 255.0f; | |||||
| inputImages = inputImages.reshape(num, height, width, 3); | |||||
| bytes = new byte[num]; | |||||
| var outLables = np.array(bytes); | |||||
| Console.WriteLine("Image.Shape={0}", inputImages.Shape); | |||||
| Console.WriteLine("Label.Shape={0}", outLables.Shape); | |||||
| tf.enable_eager_execution(); | |||||
| var inputss = keras.Input((height, width, 3)); | |||||
| var inputs = layers.Conv2D(32, (3, 3), activation: keras.activations.Relu).Apply(inputss); | |||||
| inputs = layers.MaxPooling2D((2, 2)).Apply(inputs); | |||||
| inputs = layers.Flatten().Apply(inputs); | |||||
| var outputs = layers.Dense(10).Apply(inputs); | |||||
| var model = keras.Model(inputss, outputs, "gpuleak"); | |||||
| model.summary(); | |||||
| model.compile(loss: keras.losses.SparseCategoricalCrossentropy(from_logits: true), | |||||
| optimizer: keras.optimizers.RMSprop(), | |||||
| metrics: new[] { "accuracy" }); | |||||
| model.fit(inputImages, outLables, epochs: 200); | |||||
| } | |||||
| } | |||||
| } | |||||