Issue
So, I start a small project based on tensorflow and could not understand how to prepare dataset generated from memory input. I have a random number of sources, that generate images. Than I pass it to python script. Images created as bytes array with png format. I collect images to array, and want to prepare dataset from it and train model based on this dataset.
global_feeded_images = []
global_feeded_labels = []
def feed_image(self, img):
global global_feeded_images
global_feeded_images.append(bytes(img))
global_feeded_labels.append(0)
After collecting all images, I want to start model training.
model.fit(image_train_ds, np.array(global_feeded_labels), epochs=10)
As I understand, tensorflow could accept numpy array or tensor, but I could not understand, what I should convert, each image separatly or whole array?
Or, more shortly, how to convert array of images global_feeded_images to dataset image_train_ds?
Solution
Correct solution was simple.
fp = io.BytesIO(bytes(img)) # our bytes array
with fp:
im = Image.open(fp)
im = im.convert('L') # do grayscale or set corrent shape for flatten layer
numpydata = np.asarray(im) # tf could consume numpy
global_feeded_images.append(numpydata)
global_feeded_labels.append(0)
train_dataset = tf.data.Dataset.from_tensor_slices((global_feeded_images, global_feeded_labels))
Answered By - zealot
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.