|
|
@@ -1,5 +1,4 @@ |
|
|
|
using System; |
|
|
|
using System.IO; |
|
|
|
using System.IO; |
|
|
|
using static Tensorflow.Binding; |
|
|
|
using Tensorflow.NumPy; |
|
|
|
|
|
|
@@ -15,22 +14,8 @@ namespace Tensorflow.Keras |
|
|
|
int num_classes, |
|
|
|
string interpolation) |
|
|
|
{ |
|
|
|
// option 1: will load all images into memory, not efficient |
|
|
|
var images = np.zeros((image_paths.Length, image_size[0], image_size[1], num_channels), np.float32); |
|
|
|
for (int i = 0; i < len(images); i++) |
|
|
|
{ |
|
|
|
var img = tf.io.read_file(image_paths[i]); |
|
|
|
img = tf.image.decode_image( |
|
|
|
img, channels: num_channels, expand_animations: false); |
|
|
|
var resized_image = tf.image.resize_images_v2(img, image_size, method: interpolation); |
|
|
|
images[i] = resized_image.numpy(); |
|
|
|
tf_output_redirect.WriteLine(image_paths[i]); |
|
|
|
}; |
|
|
|
var img_ds = tf.data.Dataset.from_tensor_slices(images); |
|
|
|
|
|
|
|
// option 2: dynamic load, but has error, need to fix |
|
|
|
// var path_ds = tf.data.Dataset.from_tensor_slices(image_paths); |
|
|
|
// var img_ds = path_ds.map(x => path_to_image(x, image_size, num_channels, interpolation)); |
|
|
|
var path_ds = tf.data.Dataset.from_tensor_slices(image_paths); |
|
|
|
var img_ds = path_ds.map(x => path_to_image(x, image_size, num_channels, interpolation)); |
|
|
|
|
|
|
|
if (label_mode == "int") |
|
|
|
{ |
|
|
@@ -43,7 +28,7 @@ namespace Tensorflow.Keras |
|
|
|
|
|
|
|
Tensor path_to_image(Tensor path, Shape image_size, int num_channels, string interpolation) |
|
|
|
{ |
|
|
|
tf.print(path); |
|
|
|
// tf.print(path); |
|
|
|
var img = tf.io.read_file(path); |
|
|
|
img = tf.image.decode_image( |
|
|
|
img, channels: num_channels, expand_animations: false); |
|
|
@@ -58,18 +43,8 @@ namespace Tensorflow.Keras |
|
|
|
int num_classes, |
|
|
|
int max_length = -1) |
|
|
|
{ |
|
|
|
var text = new string[image_paths.Length]; |
|
|
|
for (int i = 0; i < text.Length; i++) |
|
|
|
{ |
|
|
|
text[i] = File.ReadAllText(image_paths[i]); |
|
|
|
tf_output_redirect.WriteLine(image_paths[i]); |
|
|
|
} |
|
|
|
|
|
|
|
var images = np.array(text); |
|
|
|
var string_ds = tf.data.Dataset.from_tensor_slices(images); |
|
|
|
|
|
|
|
// var path_ds = tf.data.Dataset.from_tensor_slices(image_paths); |
|
|
|
// var string_ds = path_ds.map(x => path_to_string_content(x, max_length)); |
|
|
|
var path_ds = tf.data.Dataset.from_tensor_slices(image_paths); |
|
|
|
var string_ds = path_ds.map(x => path_to_string_content(x, max_length)); |
|
|
|
|
|
|
|
if (label_mode == "int") |
|
|
|
{ |
|
|
|