当前位置: 首页 > 面试题库 >

Tensorflow TypeError:获取参数None具有无效的类型 ?

祁凯泽
2023-03-14
问题内容

我正在根据TensorFlow教程松散地构建RNN 。

我模型的相关部分如下:

input_sequence = tf.placeholder(tf.float32, [BATCH_SIZE, TIME_STEPS, PIXEL_COUNT + AUX_INPUTS])
output_actual = tf.placeholder(tf.float32, [BATCH_SIZE, OUTPUT_SIZE])

lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(CELL_SIZE, state_is_tuple=False)
stacked_lstm = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * CELL_LAYERS, state_is_tuple=False)

initial_state = state = stacked_lstm.zero_state(BATCH_SIZE, tf.float32)
outputs = []

with tf.variable_scope("LSTM"):
    for step in xrange(TIME_STEPS):
        if step > 0:
            tf.get_variable_scope().reuse_variables()
        cell_output, state = stacked_lstm(input_sequence[:, step, :], state)
        outputs.append(cell_output)

final_state = state

和喂养:

cross_entropy = tf.reduce_mean(-tf.reduce_sum(output_actual * tf.log(prediction), reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(learning_rate=LEARNING_RATE).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(prediction, 1), tf.argmax(output_actual, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    numpy_state = initial_state.eval()

    for i in xrange(1, ITERATIONS):
        batch = DI.next_batch()

        print i, type(batch[0]), np.array(batch[1]).shape, numpy_state.shape

        if i % LOG_STEP == 0:
            train_accuracy = accuracy.eval(feed_dict={
                initial_state: numpy_state,
                input_sequence: batch[0],
                output_actual: batch[1]
            })

            print "Iteration " + str(i) + " Training Accuracy " + str(train_accuracy)

        numpy_state, train_step = sess.run([final_state, train_step], feed_dict={
            initial_state: numpy_state,
            input_sequence: batch[0],
            output_actual: batch[1]
            })

运行此命令时,出现以下错误:

Traceback (most recent call last):
  File "/home/agupta/Documents/Projects/Image-Recognition-with-LSTM/RNN/feature_tracking/model.py", line 109, in <module>
    output_actual: batch[1]
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 698, in run
    run_metadata_ptr)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 838, in _run
    fetch_handler = _FetchHandler(self._graph, fetches)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 355, in __init__
    self._fetch_mapper = _FetchMapper.for_fetch(fetches)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 181, in for_fetch
    return _ListFetchMapper(fetch)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 288, in __init__
    self._mappers = [_FetchMapper.for_fetch(fetch) for fetch in fetches]
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 178, in for_fetch
    (fetch, type(fetch)))
TypeError: Fetch argument None has invalid type <type 'NoneType'>

也许最奇怪的部分是该错误在 第二 次迭代中抛出,并且第一次迭代完全正常。我正在尝试修复此问题,因此,我们将不胜感激。


问题答案:

您正在将train_step变量重新分配给结果的第二个元素sess.run()(恰好是None)。因此,在第二次迭代中,train_stepis
None,导致错误。

修复很简单:

for i in xrange(1, ITERATIONS):

    # ...

    # Discard the second element of the result.
    numpy_state, _ = sess.run([final_state, train_step], feed_dict={
        initial_state: numpy_state,
        input_sequence: batch[0],
        output_actual: batch[1]
        })


 类似资料:
  • 那里我从最早的网站上买了一些模板,预览版的一切都很好,但新的版本出现了类似这样的错误 我相信模板不应该有这个错误,但我仍然有它。会有什么问题?

  • 我试图做一个内连接在这3个表使用人格证,但它找不到人格证。我做错了什么? 模型: 代码: 错误: 代码: 错误:

  • 问题内容: 我刚刚了解了这种美观的语法 用可能是类型的元素来清空。Java的源代码如下所示: 现在,如果我以这种方式编写了一个泛型类型不出现在参数列表中的方法,那么有什么方法可以访问成为的实际类呢? 我的意思是,到目前为止,我编码同一件事的方法是 如果删除了-parameter,我将无法执行。显然我可以 但这给了我通常的警告。好的,在这里有帮助,但是实际上我想对方法的预期返回类型做些事情。如果我添

  • 问题内容: 我花了一些时间想知道是否有可能编写一个guice模块,该模块本身使用类型T进行参数化,并使用其type参数指定绑定。 像在此示例(不起作用)中那样: 我尝试了不同的方法,试图将T作为类/ TypeLiteral的实例传递给MyModule,但没有一个起作用。帮助表示赞赏。 问候,zukasz Osipiuk 问题答案: 为此,您将必须使用从头开始构建每个TypeLiteral 。您可以

  • 问题是: 创建一个名为Duo的泛型类,它有两个参数a和B。声明一个名为a类型的第一个变量,以及一个名为B类型的第二个变量。创建一个接受这两个参数的构造函数。在构造函数中,将这些参数分别分配给声明的变量。 这是我能想到的解决方案: 然后,当我继续问下一个问题时,我被绊住了。问题是: 使用问题4中的Duo类声明并创建两个对象,如下所示: a) 第一个名为sideShape的对象分别由字符串类型和整数类

  • 我试图通过JPA执行存储过程。我通过注释设置了存储过程: 该参数存在于数据库中,我正试图按如下方式调用该过程: 当我运行上面的代码时,我得到以下错误: 我卡在了由语句关闭引起的地方。我尝试过将它包装在事务中,但是实体管理器是共享的,我不能在那里创建事务。当我将它包装在事务模板中时,我得到了与上面相同的错误。 以下是正在使用的配置: