conv2d的叠加以用作conv3d

时间:2019-09-13 02:14:33

标签: tensorflow

正在为移动项目开发Tensorflow Lite。我正在尝试将基于Tensorflow 1.x的现有模型转换为Tensorflow Lite。 conv3d与Tensorflow Lite的兼容性遇到了问题。

由于高维卷积是低维卷积的叠加。是否可以通过一组conv2d来实现它,使其功能完全像Tensorflow Lite中的conv3d一样?还是Tensorflow 2.x,因为它是Tensorflow Lite的超集。

例如:

        update_dense = tf.compat.v1.layers.dense(fc7,8192,activation=tf.nn.leaky_relu,use_bias=True)
        update_dense = tf.reshape(update_dense, [4, 4, 4, -1, 128]) 

        reset_dense = tf.compat.v1.layers.dense(fc7,8192,activation=tf.nn.leaky_relu,use_bias=True)
        reset_dense = tf.reshape(reset_dense, [4, 4, 4, -1, 128]) 

        hidden_dense = tf.compat.v1.layers.dense(fc7,8192,activation=tf.nn.leaky_relu,use_bias=True)
        hidden_dense = tf.reshape(hidden_dense, [4, 4, 4, -1, 128])  

        t_x_s_update = tf.nn.conv3d(prev_hidden, weights['update_gate'], strides=[1, 1, 1, 1, 1], padding="SAME") + update_dense
        t_x_s_update = tf.add(t_x_s_update, biases['update_gate']) 
        update_gate = tf.sigmoid(t_x_s_update)

        t_x_s_reset = tf.nn.conv3d(prev_hidden, weights['reset_gate'], strides=[1, 1, 1, 1, 1], padding="SAME") + reset_dense
        t_x_s_reset = tf.add(t_x_s_reset, biases['reset_gate'])
        reset_gate = tf.sigmoid(t_x_s_reset)


        hidden_gate = tf.nn.conv3d(reset_gate * prev_hidden, weights['hidden_gate'], strides=[1, 1, 1, 1, 1], padding="SAME") + hidden_dense
        hidden_gate = tf.add(hidden_gate,biases['hidden_gate'])

有人可以在Tensorflow中提供使用conv2d制作conv3d的解决方案的指南或更好的代码形式吗?

0 个答案:

没有答案