对于tensorflow中的图像语义分割模型,我需要为FCN或segnet模型提供可变大小的输入。所以我使用了一个placeholer:
self.input= tf.placeholder(tf.float32, shape=(batch_size,None,None,3),name='')
在编码器 - 解码器模型中,我需要在maxpooling之后取消拼接,代码如下:
#upsample fuction used in decoder
def _upsample_along_axis(volume, axis, stride, mode='COPY'):
shape = volume.get_shape().as_list()
assert 0 <= axis < len(shape)
target_shape = shape[:]
target_shape[axis] *= stride
padding = tf.zeros(shape, dtype=volume.dtype) if mode == 'ZEROS' else volume
parts = [volume] + [padding for _ in range(stride - 1)]
volume = tf.concat(parts, min(axis+1, len(shape)-1))
target_shape = np.array(target_shape)
target_shape[0] = -1
volume = tf.reshape(volume, target_shape)
return volume
现在target_shape [axis]为none,因此target_shape[axis] *= stride
会引发错误:
TypeError:*:&#39; NoneType&#39;不支持的操作数类型和&#39; int&#39;
所以编码器 - 解码器模型的输入可以变化吗?
答案 0 :(得分:2)
Tensor的cmd := exec.Command("psql", "-d", "database_name", "-f", "path/to/database.sql")
stderr, err := cmd.StderrPipe()
if err != nil {
panic(err)
}
if err := cmd.Start(); err != nil {
panic(err)
}
errout, _ := ioutil.ReadAll(stderr)
if err := cmd.Wait(); err != nil {
fmt.Println(errout)
panic(err)
}
函数返回推断的形状,对于动态尺寸,推断的形状为get_shape
。 TensorFlow中有一个返回动态形状的函数:tf.shape
。
此函数返回将评估为形状实际值的张量。