【问题标题】:Python - Tensor Flow Error, Tensor must be from the same graphPython - 张量流错误,张量必须来自同一个图
【发布时间】:2018-12-22 15:57:37
【问题描述】:

我的 data_split 文件中定义了一个 conv_net 函数,如下所示,

def conv_net(X, weights, biases, dropout):
    X = tf.reshape(X, shape=[-1, HEIGHT, WIDTH, NETWORK_DEPTH])
#error occurs on the below line - while calling the function in debugging mode
    conv1 = conv2d('conv1', X, weights['conv_weight1'], biases['conv_bias1'])
    conv1 = maxpool2d('max_pool1', conv1, k=2)

    conv2 = conv2d('conv2', conv1, weights['conv_weight2'], biases['conv_bias2'])
    conv2 = maxpool2d('max_pool2', conv2, k=2)

    conv3 = conv2d('conv3', conv2, weights['conv_weight3'], biases['conv_bias3'])
    conv3 = maxpool2d('max_pool3', conv3, k=2)

    conv4 = conv2d('conv4', conv3, weights['conv_weight4'], biases['conv_bias4'])
    conv4 = maxpool2d('max_pool4', conv4, k=2)

    fc1 = tf.reshape(conv4, shape=[-1, weights['fcl_weight1'].get_shape().as_list()[0]])
    fc1 = tf.nn.relu(tf.add(tf.matmul(fc1, weights['fcl_weight1']), biases['fcl_bias1']))
    fc1 = tf.nn.dropout(fc1, dropout)

    fc2 = tf.nn.relu(tf.add(tf.matmul(fc1, weights['fcl_weight2']), biases['fcl_bias2']))
    fc2 = tf.nn.dropout(fc2, dropout)

    out = tf.add(tf.matmul(fc2, weights['out_weight']), biases['out_bias'], name='softmax')
    return out

我在另一个这样的 .py 文件中调用这个函数,

print("Comp2")
logits = data_split.conv_net(data_split.X, data_split.weights, data_split.biases, keep_prob)
print("Comp2.0")
prediction = tf.nn.softmax(logits)

当我运行 logits 行时,这给了我一个错误。

ValueError: Tensor("conv_weight1:0", shape=(5, 5, 4, 16), dtype=float32_ref) 必须与 Tensor("Reshape_12:0", shape=(?, 100) 来自同一个图, 100, 4), dtype=float32).

我试图从这个question 得到我的答案 - 但没有任何帮助。

【问题讨论】:

  • 您没有给出重现问题的完整代码。

标签: python tensorflow


【解决方案1】:

data_split.py 文件或“其他”.py 文件中的某处有一个tf.Graph() 定义。

您在图表中定义了模型,类似于:

g1 = tf.Graph()
with g1.as_default():
    model = conv_net(data_split.X)

但是您传递模型的data_split.X 已在g1 范围之外定义,因此或在“默认图”中(您可以使用tf.get_default_graph() 或在另一个明确定义的图中(在和g1一样)。

解决方案是将输入定义和模型定义移动到同一个图中(提示:在这种情况下,只需使用默认图而不显式创建 `tf.Graph')。

注意:如果不分享完整代码,这是你能得到的最好的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多