gpt4 book ai didi

python - TensorFlow:加载模型并对图像进行前向传递

转载 作者:行者123 更新时间:2023-11-30 09:25:57 25 4
gpt4 key购买 nike

是否可以加载我的模型并仅对图像执行一次前向操作。

我的网络定义如下:

def network(x, weights, biases, name="network"):
# 1. Hidden layer, ReLU
layer_1 = tf.add(tf.matmul(x, weights["h1"]), biases["b1"])
layer_1 = tf.nn.relu(layer_1)

# 2. Hidden layer, ReLU
layer_2 = tf.add(tf.matmul(layer_1, weights["h2"]), biases["b2"])
layer_2 = tf.nn.relu(layer_2)

# Output layer with linear activation
out_layer = tf.add(tf.matmul(layer_2, weights["out"]), biases["bout"])
return out_layer

pred = network(x, weights, biases, name="network")

我在尝试中遇到了困难:

import tensorflow as tf
import numpy as np

test_image = np.random.randn(900,1)

with tf.Session() as sess:
saver = tf.train.import_meta_graph("my_model.meta")
saver.restore(sess, tf.train.latest_checkpoint("/dir/to/model"))
op_to_restore = graph.get_tensor_by_name("network:0")

当我这样做时,我收到以下错误:

KeyError: "The name 'network:0' refers to a Tensor which does not exist. The operation, 'network', does not exist in the graph."

但是我该如何继续呢?

最佳答案

定义模型时,您也定义了图表。该图包含操作(节点),每个节点都有唯一的名称。

如果您没有明确为节点设置名称,Tensorflow 会为您分配一个名称。

如果要执行评估节点所需的操作链,则必须知道其名称。

就您而言,您必须找到 out_layer 的名称。您可以使用属性 .name 访问其名称。

pred = network(x, weights, biases, name="network")
name = pred.name
print(name)

保存此名称。

现在,您可以像以前一样恢复图表,并且可以在图表中查找正确的名称:

graph.get_tensor_by_name(name)

其中 name 是上面执行的 print(name) 返回的字符串。

关于python - TensorFlow:加载模型并对图像进行前向传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49986216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com