2016-09-30 2 views
0

При выполнении tensorflow program, я храню, имеющие следующие сообщения об ошибках, основная часть которого является чем-то вроде TypeError: Fetch argument[....]has invalid type <class 'list'>, must be a string or Tensor. (Can not convert a list into a Tensor or Operation.) Родственного сегмента кода, который непосредственно вызывает эту ошибку является _, loss, lr, gradients = sess.run((self.optimizer, self.net.cost, self.learning_rate_node, self.net.gradients_node), feed_dict={self.net.x: batch_x,self.net.y: util.crop_to_shape(batch_y,pred_shape), self.net.keep_prob: dropout})ошибка не удается преобразовать список в Тензор или операции

Я просто чувствую смущение о причине возникновения этого сообщения об ошибке, так как он может быть успешно запущен автором, как показано в сообщении github.

общего количества сообщений об ошибках выглядит следующим образом:

`Traceback (самый последний вызов последнего):
Файл«/develop/tfw/lib/python3.4/site-packages/tensorflow/python/client/ session.py ", строка 480, в _process_fetches
allow_operation = True)
Файл" /develop/tfw/lib/python3.4/site-packages/tensorflow/python/framework/ops.py ", строка 2301, в as_graph_element
% (тип (obj). имя, types_str))
ТипError: Невозможно преобразовать список в тензор или операцию.

Во время обработки вышеуказанного исключения, другое исключение произошло:

Traceback (самый последний вызов последнего): Файл " test.py", строка 30, в пути = trainer.train (генератор»./unet_trained ", training_iters = 20, epochs = 100, display_step = 2) Файл" /home/user/test/u-net/ver3/unet.py ", строка 364, в поезде self.net.keep_prob: исключение }) Файл «/develop/tfw/lib/python3.4/site-packages/tensorflow/python/client/session.py», строка 340, в запуске run_metadata_ptr) Файл «/ develop/tfw/lib/python3» .4/site-packages/tensorflow/python/client/session.py ", строка 523, in _run processing_fetches = self._process_fetches (выборки) Файл «/develop/tfw/lib/python3.4/site-packages/tensorflow/python/client/session.py», строка 493, в _process_fetches % (subfetch, fetch, type (subfetch), str (e))) TypeError: Получить аргумент [,,,,,,,,,,,,,,,,,,,] из [,,,,,,,, ,,, <: 0 'shape = (16,) dtype = float32>,,,,,,,,] имеет недопустимый тип, должен быть строкой или тензором. (Невозможно преобразовать список в Тензор или операцию.) `

ответ

0

Если вы используете Tensorflow версию r0.9 или предыдущую версию, Session.run не принимает произвольно вложенный список или кортеж в аргументе разгонов. Итак, self.net.gradients_node (который представляет собой список тензоров) в кортеже вызывает ваш TypeError. Этот код должен работать в Tensorflow r0.10. Если вы предпочитаете отдых в r0.9, измените строку:

_, loss, lr, gradients = sess.run((self.optimizer, self.net.cost, self.learning_rate_node, self.net.gradients_node), feed_dict={self.net.x: batch_x,self.net.y: util.crop_to_shape(batch_y,pred_shape), self.net.keep_prob: dropout}) 

к

list_of_outputs = sess.run([self.optimizer, self.net.cost, self.learning_rate_node]+ self.net.gradients_node, feed_dict={self.net.x: batch_x,self.net.y: util.crop_to_shape(batch_y,pred_shape), self.net.keep_prob: dropout}) 
loss = list_of_outputs[1] 
lr = list_of_outputs[2] 
gradients = list_of_outputs[2:] 

или (с Python 3. *)

_,loss,lr,*gradients = sess.run([self.optimizer, self.net.cost, self.learning_rate_node]+ self.net.gradients_node, feed_dict={self.net.x: batch_x,self.net.y: util.crop_to_shape(batch_y,pred_shape), self.net.keep_prob: dropout}) 

Это должно работать

+0

Большое спасибо. Я дам ему попробовать. Наша текущая версия - 0.8.0. – user288609

+0

Нет проблем, скажите, если это не сработает. – Corentin

+0

Привет, Corentin, извините меня за ответ, из-за отпуска. Я попробовал, как ты предложил, похоже, что это работает.Однако он дает другое сообщение об ошибке для пересмотренного. _, loss, lr, gradients = sess.run ([self.optimizer, self.net.cost, self.learning_rate_node] + self.net.gradients_node, feed_dict = {self.net.x: batch_x, self.net.y : util.crop_to_shape (batch_y, pred_shape), self.net.keep_prob: dropout}) ValueError: слишком много значений для распаковки (ожидается 4) – user288609

Смежные вопросы