Как преобразовать набор данных Tensorflow в двумерный массив - PullRequest
0 голосов
/ 19 мая 2018

У меня есть набор данных TensorFlow, который содержит почти 15000 разноцветных изображений с разрешением 168 * 84 и меткой для каждого изображения.Его тип и форма имеют следующий вид:

<формы ConcatenateDataset: ((168, 84, 3), ()), типы: (tf.float32, tf.int32)>

IМне нужно использовать его для обучения моей сети. Вот почему мне нужно передать его в качестве параметра этой функции, в которой я построил свои слои:

def cnn_model_fn(features, labels, mode):

  input_layer = tf.reshape(features["x"], [-1, 168, 84, 3])
  # Convolutional Layer #1
  conv1 = tf.layers.conv2d(
     inputs=input_layer,
     filters=32,
     kernel_size=[5, 5],
     padding="same",
     activation=tf.nn.relu)
.
.
.

Я попытался преобразовать каждый тензор в np.array (которыйправильный тип для функции выше, я думаю) с помощью tf.eval () и np.ravel ().Но я потерпел неудачу.

Итак, как мне преобразовать этот набор данных в правильный тип, чтобы передать его функции?

Плюс

Яновичок в python и tenorflow, и я не думаю, что понимаю, почему существуют наборы данных, если мы не можем использовать их непосредственно для построения слоев (я следую руководству на сайте TensorFlow, кстати).

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

У меня недавно была эта проблема, и я сделал это так:


    #load datasets
    import tf
    import tensorflow_datasets as tfds
    dataset, metadata = tfds.load('cycle_gan/horse2zebra',
                                  with_info=True, as_supervised=True)
    train_horses, train_zebras = dataset['trainA'], dataset['trainB']

    #load dataset in to numpy array
    sess = tf.compat.v1.Session()
    tra=train_horses.batch(1000).make_one_shot_iterator().get_next()
    train_A=np.array(sess.run(tra)[0])
    print(train_A.shape)
    sess.close()

    #preview one of the images
    import matplotlib.pyplot as plt
    %matplotlib inline
    import numpy as np
    print(train_A.shape)
    plt.imshow(train_A[1])
    plt.show()

0 голосов
/ 19 мая 2018

Звучит не так, как будто вы все настраиваете с помощью конвейера набора данных Tensorflow, вот руководство для этого:

https://www.tensorflow.org/programmers_guide/datasets

Вы можете следовать этому (этоправильный подход, но есть небольшая кривая обучения, чтобы привыкнуть к нему), или вы можете просто передать массив numpy в sess.run как часть параметра feed_dict.Если вы пойдете этим путем, то вам просто нужно создать tf.placeholder, который будет заполнен значением в feed_dict.Многие из базовых учебных примеров здесь следуют этому подходу:

https://github.com/aymericdamien/TensorFlow-Examples

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...