def inference(arg1, arg2):
#something to do
for x in np.range(arg2):
#to do
в приведенной выше коде, я определить модель, и хочу ранжировать в arg2, как NumPy: for i in numpy.range(arg2)
, проблема заключается в том, что арг2 является тензором , может быть, от tf.placeholder()
, но как ??tensorflow: как сделать NumPy-подобный диапазон с тензором
Edit:
на самом деле, мой следующий код:
def inference(arg1, arg2):
#to do
return loss
loss = inference(arg1, arg2)
#do something about tf.optimizer
sess = tf.Session()
sess.run()
поэтому мой первый вопрос заключается в функции inference()
я могу определить сеанс, и называем session.run() еще раз?
второй, я делаю это, но получается, что: tensorflow.python.framework.errors.InvalidArgumentError: Cannot assign a device to node 'tower_3/train/shuffle_batch/random_shuffle_queue': Could not satisfy explicit device specification '/device:GPU:3' because no supported kernel for GPU devices is available. Colocation Debug Info: Colocation group had the following types and devices: QueueEnqueue: CPU QueueSize: CPU QueueClose: CPU QueueDequeueMany: CPU RandomShuffleQueue: CPU [[Node: tower_3/train/shuffle_batch/random_shuffle_queue = RandomShuffleQueue[capacity=3, component_types=[DT_INT64, DT_INT64, DT_INT64], container="", min_after_dequeue=0, seed=0, seed2=0, shapes=[[260], [], []], shared_name="", _device="/device:GPU:3"]()]]
же проблема на процессоре
, так что я не знаю, в tensorflow многих функций, таких как tf.range() просто принять питона Int, но когда у меня есть тензор, что я могу сделать? Это сводит меня с ума
Edit снова
, например, mnist в учебники, модель определена в функции inference()
, которая использует tf.placeholder()
в funciont run_training()
из fully_connected_feed.py, это кормить его изображения и этикетки, затем sess.run()
, поэтому в функции inference()
, если вы хотите, чтобы получить тензор images
с этим кодом:
sess = tf.Session()
sess.run(images)
это получится:
tensorflow.python.framework.errors.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float and shape [100,784] [[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[100,784], _device="/job:localhost/replica:0/task:0/gpu:0"]()]] [[Node: Placeholder/_2 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_5_Placeholder", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
это выглядит как в тот момент, нет никакого изображения не было скормить тензора images
Edit снова снова
Я делаю что-то о NLP, то arg1, может быть предложение с разной длиной, поэтому я сделал max_len, а записываю реальную длину в arg2
это программа кодировщика и декодера с использованием lstm, в фазе декодера, я хочу добавить модель внимания, поэтому я должен знать длину предложение для вычисления импа ortance каждого слова в предложении, но длина является тензором, я не могу сделать что-то вроде:
for x in len:
#do something
Вам необходимо сначала оценить 'arg2', используя' session.run'. Это дает вам numpy массив назад –
@YaroslavBulatov не работает – wang
Не могли бы вы объяснить, что вы пытаетесь сделать с этим циклом? Вы можете легко создать 'tf.range (arg2)' или использовать цикл 'tf.while()'. Это зависит от того, что вы пытаетесь сделать внутри цикла –