FailedPreconditionError: Попытка использовать неинициализированное значение conv2d_1 / kernel с Tensorflow / Python - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать модель CNN с помощью следующего кода:

import tensorflow as tf

class Create_CNN:
  def _conv(self, input, nChannels, kernelSize, kernelStride):
    conv = tf.layers.conv2d(inputs=input,
                            filters=nChannels,
                            kernel_size=kernelSize,
                            strides=(kernelStride, kernelStride),
                            padding='same',
                            activation=tf.nn.relu
                            )
    return conv

  def create_cnn(self, input, nChannels, kernelSize, kernelStride):
    input = tf.reshape(input, shape=[-1, 500, 530, 3])
    layer1 = Create_CNN()._conv(input, nChannels, kernelSize, kernelStride)
    layer2 = Create_CNN()._conv(layer1, nChannels, kernelSize, kernelStride)
    layer3 = Create_CNN()._conv(layer2, nChannels, kernelSize, kernelStride)
    layer4 = Create_CNN()._conv(layer3, nChannels, kernelSize, kernelStride)
    layer5 = Create_CNN()._conv(layer4, nChannels, kernelSize, kernelStride)
    return layer5

Здесь я ввожу изображение размером 500 * 530 * 3. Я пытаюсь передать входные и другие параметры, используя следующий код:

with tf.Session().as_default():
      tf.global_variables_initializer().run()
      i = PlantUtils().create_instance('ara2013_plant001_rgb.png', 'ara2013_plant001_label.png', 500, 530, 100, 106, 1, 1,
                                 1)
      input_image = i[0] # It is a 500 * 530 * 3 tensor
      b = Create_CNN().create_cnn(input=input_image, kernelSize=3, kernelStride=1, nChannels=30)
      x = tf.argmax(input=b, axis=1)
      print x.eval()

Когда я пытаюсь распечатать логиты (означает значение x), я получаю следующую ошибку:

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value conv2d_1/kernel

Я не уверен, что неправильно я сделал. Мне нужно увидеть логиты, сгенерированные из моей модели CNN. Мне действительно нужна помощь в этом.

1 Ответ

0 голосов
/ 27 апреля 2018

Это происходит потому, что вы запускаете инициализатор до построения графика. В идеале вы должны построить Graph перед созданием Session. Попробуйте это

with tf.Graph().as_default():
  i = PlantUtils().create_instance('ara2013_plant001_rgb.png', 'ara2013_plant001_label.png', 500, 530, 100, 106, 1, 1, 1)
  input_image = i[0] # It is a 500 * 530 * 3 tensor
  b = Create_CNN().create_cnn(input=input_image, kernelSize=3, kernelStride=1, nChannels=30)
  x = tf.argmax(input=b, axis=1)
  with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print sess.run(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...