【问题标题】:ValueError: Fetch argument <tf.Operation 'init_8' type=NoOp> cannot be interpreted as a Tensor.ValueError: Fetch 参数 <tf.Operation 'init_8' type=NoOp> 不能被解释为张量。
【发布时间】:2017-10-01 00:14:32
【问题描述】:

我正在使用 Keras 库,我只是尝试初始化 VGG16 模型,但我收到一个错误,即所有输入都不是该图的元素。我正在使用 TensorFlow 后端。

输入:

from keras.applications.vgg16 import VGG16

model = VGG16()

输出:

runfile('C:/Users/joshu/Documents/Code/Testing/vgg_tester.py', wdir='C:/Users/joshu/Documents/Code/Testing') Traceback (最近的 最后调用):

文件“”,第 1 行,在 runfile('C:/Users/joshu/Documents/Code/Testing/vgg_tester.py', wdir='C:/Users/joshu/Documents/Code/Testing')

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", 第 880 行,在运行文件中 execfile(文件名,命名空间)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", 第 102 行,在 execfile 中 exec(编译(f.read(),文件名,'exec'),命名空间)

文件“C:/Users/joshu/Documents/Code/Testing/vgg_tester.py”,第 11 行, 在 模型 = VGG16()

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\keras\applications\vgg16.py", 第 163 行,在 VGG16 中 model.load_weights(weights_path)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\keras\engine\topology.py", 第 2708 行,在 load_weights 中 self.load_weights_from_hdf5_group(f)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\keras\engine\topology.py", 第 2794 行,在 load_weights_from_hdf5_group K.batch_set_value(weight_value_tuples)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", 第 1860 行,在 batch_set_value get_session().run(assign_ops, feed_dict=feed_dict)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", 第 121 行,在 get_session 中 _initialize_variables()

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", 第 273 行,在 _initialize_variables sess.run(tf.variables_initializer(uninitialized_variables))

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", 第 778 行,运行中 run_metadata_ptr)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", 第 969 行,在 _run fetch_handler = _FetchHandler(self._graph, fetches, feed_dict_string)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", 第 408 行,在 init 中 self._fetch_mapper = _FetchMapper.for_fetch(fetches)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", 第 238 行,在 for_fetch return _ElementFetchMapper(fetches,contraction_fn)

文件 "C:\Users\joshu\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", 第 274 行,在 init 中 '张量。 (%s)' % (fetch, str(e)))

ValueError: Fetch 参数不能 被解释为张量。 (操作名称:“init_11” op:“NoOp” 输入:“^block1_conv1_W_8/Assign” 输入:“^block1_conv1_b_8/Assign” 输入:“^block1_conv2_W_8/Assign” 输入:“^block1_conv2_b_8/Assign” 输入:“^block2_conv1_W_8/Assign” 输入:“^block2_conv1_b_8/Assign” 输入:“^block2_conv2_W_8/Assign” 输入:“^block2_conv2_b_8/Assign” 输入:“^block3_conv1_W_8/Assign” 输入:“^block3_conv1_b_8/Assign” 输入:“^block3_conv2_W_8/Assign” 输入:“^block3_conv2_b_8/Assign” 输入:“^block3_conv3_W_8/Assign” 输入:“^block3_conv3_b_8/Assign” 输入:“^block4_conv1_W_8/Assign” 输入:“^block4_conv1_b_8/Assign” 输入:“^block4_conv2_W_8/Assign” 输入:“^block4_conv2_b_8/Assign” 输入:“^block4_conv3_W_8/Assign” 输入:“^block4_conv3_b_8/Assign” 输入:“^block5_conv1_W_8/Assign” 输入:“^block5_conv1_b_8/Assign” 输入:“^block5_conv2_W_8/Assign” 输入:“^block5_conv2_b_8/Assign” 输入:“^block5_conv3_W_8/Assign” 输入:“^block5_conv3_b_8/Assign” 输入:“^fc1_W_4/Assign” 输入:“^fc1_b_4/Assign” 输入: “^fc2_W_4/Assign”输入:“^fc2_b_4/Assign”输入: “^predictions_W_4/Assign”输入:“^predictions_b_4/Assign”输入: “^cond_153/switch_f”不是该图的元素。)

【问题讨论】:

    标签: keras


    【解决方案1】:

    我打开了 VGG16 代码和提到的文档

    "image_data_format": "channels_last"

    包含在 keras 配置 JSON 文件中。添加似乎可以解决问题。

    不确定这和之间的区别:

    "image_dim_ordering": "tf"

    但两者似乎都有效。

    【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2022-11-23
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    相关资源
    最近更新 更多