Tensorflow可以避免裁剪形状信息

时间:2018-04-23 16:39:30

标签: tensorflow

我再次遇到Tensorflow的问题。我正在使用FCN模型,并且由于内存使用需要应用随机裁剪。

tf.random_crop(combined, size=[512, 512, 4])
不幸的是,现在新尺寸“坚持”张力,我无法摆脱它。 由此产生的问题是,结果模型只接受大小为512x512的输入,据我所知,这种输入无法以一种很好的方式解决。 是否有任何解决方案可以删除由random_crop引起的形状信息,或者在获得训练模型后轻松调整大小? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我不知道它是否完全适合您的用例,但size的{​​{1}}参数可以是张量,因此您可以使用{{1} }如下例所示。

tf.random_crop()

修改

根据作物尺寸的存储方式,可能有不同的解决方案可以在不使用placeholder的情况下分配import tensorflow as tf import numpy as np image = tf.placeholder(tf.float64, [None, None, 4]) cropped_size = tf.placeholder(tf.int32, [2]) cropped_image = tf.random_crop(image, size=[cropped_size[0], cropped_size[1], 4]) print(cropped_image.get_shape().as_list()) # [None, None, 4] with tf.Session() as sess: res = sess.run(cropped_image, feed_dict={image: np.random.rand(900, 600, 4), cropped_size: [512, 512]}) print(res.shape) # (512, 512, 4) 的值。例如使用TF文件阅读器(在读取之前,这些值将保持未知)。

另一个简单的黑客行为:利用cropped_sizedoc),提供feed_dict无论如何获得的裁剪尺寸。由于tf.placeholder_with_default(default_val, shape)值实际上未分配到运行时(如果您要为此占位符提供不同的值),您的维度将保留在图表中default_val

tf.placeholder_with_default()