gpt4 book ai didi

python - 在 TensorFlow 中使用图像批处理进行多次运行

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

我正在尝试在 TensorFlow 中实现一个输入管道,由于不同网络部分中的多次权重更新,它可以保存图形多次运行的输入批处理。

我认为我可以用一个条件包装输入管道:

# flag to skip image fetch 
forwarding_network = tf.placeholder(tf.bool, [], name='forwarding_network')

input_images = None # image queue from input pipeline, must be set in real
input_labels = None # label queue from input pipeline, must be set in real

INPUT_HEIGHT = 64 # Height of the images/labels
WIDTH_HEIGHT = 64 # Width of the images/labels

# Fetch new batch from input pipeline
def forwardIR():
image_batch_fetch, label_batch_fetch = tf.train.batch([input_images, input_labels], \
batchsize=32, capacity=64)

with tf.variable_scope('im_reader_forward'):
image_batch = tf.get_variable("image_batch ", shape=[32, INPUT_HEIGHT, INPUT_WIDTH, 3], \
dtype=tf.float32, trainable=False, \
initializer=tf.constant_initializer(0.0))

image_batch = tf.assign(image_batch, image_batch_fetch)

label_batch = tf.get_variable("label_batch ", shape=[32, INPUT_HEIGHT, INPUT_WIDTH, 1], \
dtype=tf.uint8, trainable=False, \
initializer=tf.constant_initializer(0.0))

label_batch = tf.assign(label_batch, label_batch_fetch)
return image_batch, label_batch

# Hold last batch, no new fetch from pipeline
def holdIR():
with tf.variable_scope('im_reader_forward', reuse=True):
return tf.get_variable('image_batch', dtype=tf.float32), \
tf.get_variable('label_batch', dtype=tf.uint8)

# Switch: If forwarding_network == True, fetch new images from queue; else not)
image_batch, label_batch = tf.cond(forwarding_network, lambda: forwardIR(), lambda: holdIR())

# calculate loss with batch
net = Model(image_batch)
loss = net.predict()

我的问题是,训练开始时没有任何错误或失败,但什么也没有发生。也许变量和网络操作之间没有联系?条件的输出直接输入到网络模型中。

最佳答案

好吧,比我想象的要容易得多。 -.-:D

通过首先运行 tf session 来评估图像/标签获取部分并通过占位符将输出提供给训练迭代来解决该问题。

## define input pipeline, network, loss calculation, session, ...

image_batch_out, label_batch_out = sess.run([image_batch_ir, label_batch_ir])

feed_dict = { image_batch : image_batch_out, label_batch : label_batch_out }

loss_1, _ = sess.run([loss_val_1, train_op_1], feed_dict=feed_dict)
loss_2, _ = sess.run([loss_val_2, train_op_2], feed_dict=feed_dict)
loss_3, _ = sess.run([loss_val_3, train_op_3], feed_dict=feed_dict)

正如评论中提到的那样,根本不需要变量。 :)

关于python - 在 TensorFlow 中使用图像批处理进行多次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52223816/

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