Tensorflow: sess.run возвращает ту же метку вывода - PullRequest
0 голосов
/ 26 мая 2018

Я реализовал классификатор изображений тензорного потока и, в конце концов, sess.run каждый раз возвращает один и тот же массив np.Понятия не имею, почему это происходит?

Может кто-нибудь сказать, что я делаю неправильно?

def predict():

  train = data.train
  test = data.test
  tf.reset_default_graph()

  (n_x, m) = train.images.T.shape #n_x is 784
  X = xPlaceholder(n_x) ##return X of shape(784,)

  with tf.Session() as sess:
      new_saver = tf.train.import_meta_graph('~/trained-model.ckpt.meta')
      new_saver.restore(sess, '~/trained-model.ckpt')
      #y_pred is the softmax of last output layer; 
      y_pred = tf.get_default_graph().get_tensor_by_name('y_pred:0')
      #imageprepare function return (784,) np array
      output_label = sess.run(pred, feed_dict={X: imageprepare('jean.jpeg')}) 
      print(output_label)

Выходная метка возвращается в виде массива np с формой [10,] где 10количество этикетокЗаранее спасибо.

1 Ответ

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

В следующем коде вы вообще не выполняете восстановленный график.Вы создали отдельный заполнитель X, который не принадлежит восстановленному конвейеру графа.И вы выполняете переменную pred, которая выходит за рамки предоставленной вами области (здесь она не определена).

Если вам просто нужен вывод, вы можете передать в session.run Имена операций (переменные, заполнители) в виде строки:

session.run('y_pred:0', feed_dict={'x_placheholder:0':numpy_image})

Убедитесь, что вы задали имена этих переменных при построении графика (т.е. tf.placeholder(shape, name='x_placholder')).

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