|
|
@@ -1,6 +1,7 @@ |
|
|
|
using System; |
|
|
|
using System.IO; |
|
|
|
using static Tensorflow.Binding; |
|
|
|
using Tensorflow.NumPy; |
|
|
|
|
|
|
|
namespace Tensorflow.Keras |
|
|
|
{ |
|
|
@@ -14,9 +15,23 @@ namespace Tensorflow.Keras |
|
|
|
int num_classes, |
|
|
|
string 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)); |
|
|
|
// 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]); |
|
|
|
}; |
|
|
|
|
|
|
|
// 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 img_ds = tf.data.Dataset.from_tensor_slices(images); |
|
|
|
if (label_mode == "int") |
|
|
|
{ |
|
|
|
var label_ds = dataset_utils.labels_to_dataset(labels, label_mode, num_classes); |
|
|
|