如何动态设置反卷积tf.nn.conv2d_transpose()的output_shape的batch_size

在复现网络的时候遇到一个问题,在使用tf.nn.conv2d_transpose()实现转置卷积的时候,该函数里面有个参数是output_shape,需要确定输出tensor的shape,由于在建立网络的时候最开始使用的是占位符(placeholder)

images = tf.placeholder(tf.float32, [None, self.cfgs["training"]['image_height'], self.cfgs["training"]['image_width'], self.cfgs["training"]['n_channels']])

这里对于batch_size并没有确定,而是用了None代替。
而在确定转置卷积的output_shape的时候就会导致batch_size也是不定的

所以,如何动态设置反卷积tf.nn.conv2d_transpose()的output_shape的batch_size

我看到的有两种解决办法:

1、设置一个全局变量,global_batch_size,在这个全局的变量里面获取batch_size。但是这个方法感觉还是没有很“动态”

2、另一个是获得输入tensor的shape的tensor:

in_shape_tensor=tf.shape(input)

tf.shape()返回的是目标tensor的shape的tensor,在建立网络的时候他是没有定义的,只有在运行的时候才能知道是多少,也就是这个shape是动态的

def de_conv(self,input,out_channal=1,up_scale=1,padding='SAME',name="upsample_bilinear"):
    in_shape_tensor=tf.shape(input)
    in_shape=input.shape.as_list()
    strides=[1,up_sca
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值