Мне нужна помощь по поводу разделенной трехмерной свертки в тензорном потоке - PullRequest
0 голосов
/ 14 марта 2019

Я студент и изучаю глубокую нейронную сеть.

Я увидел одну бумагу с названием:

" Глубокая трехмерная свертка: уменьшение параметров модели в задачах 3D Vision "

Мне нужно реализовать разделительную трехмерную свертку, представленную в этой статье.

Я хочу, чтобы вы указали мои источники.

separable_conv3d.py

def separable_conv3d(input, output_dim, depth_filter_channel=1, strides=1, padding='SAME', name=None):
    input_tensor_channel = input.get_shape().as_list()[-1]
    kernel1 = tf.Variable(tf.truncated_normal(shape=[batch_frame, 3, 3, input_tensor_channel, depth_filter_channel], stddev=0.1))
    feature_list = []
    for c in range(0, len(input_tensor_channel)):
        feature1 = conv3d(input.shape[:, :, c], weight=kernel1, strides=strides, padding=padding, name=name)
        feature_list.append(feature1)

    total_feature = tf.concat(feature_list, axis=-1)
    total_tensor_channel = total_feature.get_shape().as_list()[-1]
    kernel3 = tf.Variable(tf.truncated_normal(shape=[1, 1, 1, total_tensor_channel, output_dim]))
    pw1 = conv3d(input=total_feature, weight=kernel3, strides=strides, padding=padding, name=name)

return pw1

Это изображение, на которое я ссылался.

enter image description here

Любая критика приветствуется. Это РЕАЛЬНО.

1 Ответ

0 голосов
/ 26 апреля 2019

Я не тестировал ваш код, но, как я понял, при выборе функций в цикле for вы используете 3 измерения и переводите c в 3-е измерение, но, насколько я знаю, 3D-свертка - это 4D, поэтому было бы правильно, если вы добавите дополнительное измерение. Я скоро буду тестировать и редактировать ваш код.

...