From 0012418bc7a0e63cb6e3b52cbcfcca86a9cf7b5d Mon Sep 17 00:00:00 2001 From: constatza <29166969+constatza@users.noreply.github.com> Date: Wed, 16 Oct 2024 10:28:38 +0300 Subject: [PATCH] Fix: Enable parallel access in files of LoadNetwork method - Updated `LoadNetwork` method to use `File.Open` with `FileShare.Read` to allow multiple threads to read the network and normalization files concurrently. - Fixed issue where multiple processes couldn't access same file throwing file access error --- .../NeuralNetworks/Autoencoder.cs | 4 ++-- .../NeuralNetworks/ConvolutionalAutoencoder.cs | 4 ++-- .../NeuralNetworks/ConvolutionalNeuralNetwork.cs | 4 ++-- .../NeuralNetworks/FeedForwardNeuralNetwork.cs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/Autoencoder.cs b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/Autoencoder.cs index 1414b4a..d092d62 100644 --- a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/Autoencoder.cs +++ b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/Autoencoder.cs @@ -214,14 +214,14 @@ public void SaveNetwork(string netPath, string weightsPath, string normalization public void LoadNetwork(string netPath, string weightsPath, string normalizationPath) { - using (Stream stream = File.Open(normalizationPath, FileMode.Open)) + using (Stream stream = File.Open(normalizationPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); var Normalization = (INormalization[])binaryFormatter.Deserialize(stream); NormalizationX = Normalization[0]; } - using (Stream stream = File.Open(netPath, FileMode.Open)) + using (Stream stream = File.Open(netPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); AutoencoderLayer = (INetworkLayer[])binaryFormatter.Deserialize(stream); diff --git a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalAutoencoder.cs b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalAutoencoder.cs index 5f1c1d8..2c170ed 100644 --- a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalAutoencoder.cs +++ b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalAutoencoder.cs @@ -324,14 +324,14 @@ public void SaveNetwork(string netPath, string weightsPath, string normalization public void LoadNetwork(string netPath, string weightsPath, string normalizationPath) { - using (Stream stream = File.Open(normalizationPath, FileMode.Open)) + using (Stream stream = File.Open(normalizationPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); var normalization = (INormalization[])binaryFormatter.Deserialize(stream); Normalization = normalization[0]; } - using (Stream stream = File.Open(netPath, FileMode.Open)) + using (Stream stream = File.Open(netPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); AutoencoderLayer = (INetworkLayer[])binaryFormatter.Deserialize(stream); diff --git a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalNeuralNetwork.cs b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalNeuralNetwork.cs index 3c383e8..a149531 100644 --- a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalNeuralNetwork.cs +++ b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/ConvolutionalNeuralNetwork.cs @@ -247,7 +247,7 @@ public void SaveNetwork(string netPath, string weightsPath, string normalization public void LoadNetwork(string netPath, string weightsPath, string normalizationPath) { - using (Stream stream = File.Open(normalizationPath, FileMode.Open)) + using (Stream stream = File.Open(normalizationPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); var Normalization = (INormalization[])binaryFormatter.Deserialize(stream); @@ -255,7 +255,7 @@ public void LoadNetwork(string netPath, string weightsPath, string normalization NormalizationY = Normalization[1]; } - using (Stream stream = File.Open(netPath, FileMode.Open)) + using (Stream stream = File.Open(netPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); NeuralNetworkLayer = (INetworkLayer[])binaryFormatter.Deserialize(stream); diff --git a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/FeedForwardNeuralNetwork.cs b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/FeedForwardNeuralNetwork.cs index a9475d0..b260113 100644 --- a/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/FeedForwardNeuralNetwork.cs +++ b/src/MGroup.MachineLearning.TensorFlow/NeuralNetworks/FeedForwardNeuralNetwork.cs @@ -178,7 +178,7 @@ public void SaveNetwork(string netPath, string weightsPath, string normalization public void LoadNetwork(string netPath, string weightsPath, string normalizationPath) { - using (Stream stream = File.Open(normalizationPath, FileMode.Open)) + using (Stream stream = File.Open(normalizationPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); var Normalization = (INormalization[])binaryFormatter.Deserialize(stream); @@ -186,7 +186,7 @@ public void LoadNetwork(string netPath, string weightsPath, string normalization NormalizationY = Normalization[1]; } - using (Stream stream = File.Open(netPath, FileMode.Open)) + using (Stream stream = File.Open(netPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); NeuralNetworkLayer = (INetworkLayer[])binaryFormatter.Deserialize(stream);