Построение тензора в Python - PullRequest
0 голосов
/ 19 июня 2019

Я следую учебному пособию от https://www.tensorflow.org/beta/tutorials/generative/dcgan

Я хочу видеть изображение, которое генерируется с помощью plt.imshow (), но по какой-то причине строка

generator = make_generator_model()

noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)
#type = tensorflow.python.framework.ops.Tensor

plt.imshow(generated_image[0, :, :, 0], cmap='gray')

не работает для меня, и я получаю сообщение об ошибке:

TypeError: Image data cannot be converted to float

Я проследил несколько потоков в StackOverflow и попытался привести Tensor с помощью tf.cast, но даже это не помогло.

Модель на сайте отличается от моего кода (только незначительно)

def make_generator_model():
    model = Sequential()
    model.add(Dense(9*9*256, use_bias=False, input_shape=(100,)))
#     model.add(BatchNormalization())
    model.add(LeakyReLU())

    model.add(Reshape((9, 9, 256)))
    assert model.output_shape == (None, 9, 9, 256) # Note: None is the batch size

    model.add(Conv2DTranspose(128, (3, 3), strides=(1, 1), padding='same', use_bias=False))
    assert model.output_shape == (None, 9, 9, 128)
#     model.add(BatchNormalization())
    model.add(LeakyReLU())

    model.add(Conv2DTranspose(64, (3,3), strides=(1, 1), padding='same', use_bias=False))
    assert model.output_shape == (None, 9, 9, 64)
#     model.add(BatchNormalization())
    model.add(LeakyReLU())

    model.add(Conv2DTranspose(1, (3,3), strides=(1, 1), padding='same', use_bias=False, activation='tanh'))
    assert model.output_shape == (None, 9,9,1)

    return model

1 Ответ

1 голос
/ 20 июня 2019

В TensorFlow 1.xx вам нужно оценить выходной тензор.

generator = make_generator_model()
noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)

sess = tf.Session() #create session 
sess.run(tf.global_variables_initializer()) #initialize variables
image = sess.run(generated_image[0, :, :, 0]) #evaluate image tensor inside session

plt.imshow(im, cmap='gray')
plt.show()

Или вы можете использовать бета-версию TensorFlow 2.0, где по умолчанию используется активное выполнение.

generator = make_generator_model()
noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)

plt.imshow(generated_image[0, :, :, 0], cmap='gray')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...