2017-07-11 1 views
0

J'ai travaillé sur l'ensemble de données MNIST pour apprendre à utiliser Tensorflow et Python pour mon cours d'apprentissage en profondeur.Redimensionner MNIST dans Tensorflow

Je veux redimensionner MNIST comme 22 & 22 en utilisant tensorflow, alors je l'entraîne, mais je ne sais pas comment faire?

Pourriez-vous m'aider?

+0

Vous pouvez vous référer à: https://stackoverflow.com/questions/42784809/resize-mnist-data-on-tensorflow – o0omycomputero0o

+2

Qu'avez-vous essayé jusqu'à présent? –

Répondre

0

Avez-vous essayé tf.image.resize_image?

La méthode:

resize_images(images, size, method=ResizeMethod.BILINEAR, 
    align_corners=False) 

où les images est un lot d'images, et la taille est un tenseur de vecteur qui détermine la nouvelle hauteur et la largeur. Vous pouvez consulter la documentation complète ici: https://www.tensorflow.org/api_docs/python/tf/image/resize_images

0

La réponse de TheRevanchist est correcte. Cependant, pour l'ensemble de données mnist, vous devez d'abord de remodeler le tableau mnist avant de l'envoyer à tf.image.resize_images():

import tensorflow as tf 
import numpy as np 
import cv2 

mnist = tf.contrib.learn.datasets.load_dataset("mnist") 

batch = mnist.train.next_batch(10) 
X_batch = batch[0] 
batch_tensor = tf.reshape(X_batch, [10, 28, 28, 1]) 
resized_images = tf.image.resize_images(batch_tensor, [22,22]) 

Le code ci-dessus prend un lot de 10 images mnist et les remodèle à partir d'images 28x28 à 22x22 tensorflow images .

Si vous souhaitez afficher les images, vous pouvez utiliser opencv et le code ci-dessous. Le resized_images.eval() convertit l'image tensorflow en un tableau numpy!

with tf.Session() as sess: 
    numpy_imgs = resized_images.eval(session=sess) # mnist images converted to numpy array 
    for i in range(10): 
     cv2.namedWindow('Resized image #%d' % i, cv2.WINDOW_NORMAL) 
     cv2.imshow('Resized image #%d' % i, numpy_imgs[i]) 
     cv2.waitKey(0) 
0
  • Vous pouvez utiliser la fonction cv2.resize() de OpenCV
  • Utilisez une boucle pour aller itérer à travers chaque image
  • Et à l'intérieur de la boucle pour chaque image ajouter cette ligne cv2.resize(source_image, (22, 22))

    def resize(mnist): 
        train_data = [] 
        for img in mnist.train._images: 
          resized_img = cv2.resize(img, (22, 22)) 
          train_data.append(resized_img) 
        return train_data