我正在尝试将一些代码从tensorflow 1.x转换到tensorflow 2.x。到目前为止一切都很顺利,但我被困在了atrous卷积上。与其他层不同,似乎没有一对一的转换。
到目前为止,我一直在将所有东西统一到tf.keras。有一个纯粹的keras实现here和一个tf.nn.atrous_conv2d实现here,但我也不确定是否可以在tf.keras.Model函数here中使用它们。
代码如下:
with tf.variable_scope('aconv1d_' + name):
shape = [None, 30, 128]
kernel = tf.get_variable('kernel', (1, size, shape[-1], n_filters), dtype=tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
if bias:
b = tf.get_variable('b', [shape[-1]], dtype=tf.float32, initializer=tf.constant_initializer(0))
out = tf.nn.atrous_conv2d(tf.expand_dims(input_tensor, dim=1), kernel, rate=rate, padding='SAME') + (
b if bias else 0)
out = tf.squeeze(out, [1])
return out我只想转换它,把它放到keras functional中,执行model.fit,然后运行。
谢谢你帮助像我这样的菜鸟。
发布于 2020-10-30 16:08:07
由于参数"dilation_rate“,在tensorflow2.x版本中已经提供了空洞卷积或扩张卷积。默认情况下,如果查看https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D,则将其设置为(1,1)。将其修改为其他值,例如(2,2),您将得到膨胀/空洞卷积。
https://stackoverflow.com/questions/64603919
复制相似问题