tf.fold против tf.scan против tf.map_fn - PullRequest
0 голосов
/ 18 апреля 2020

Я запутался с реализацией следующих функций в TensorFlow, в настоящее время я использую tf.map_fn, чтобы создать тензор высшего порядка, распакованный из нескольких объектов, обнаруженных в Multi-Object Tracker.

    y = tf.placeholder(tf.int32, [None, None])

    samples_flat = tf.map_fn(lambda samples: tf.layers.flatten(samples), input, dtype=tf.float32)



    W4 = tf.scan(lambda x: tf.get_variable('fc4/kernel', shape=(1024, 512),
                         initializer=tf.contrib.layers.variance_scaling_initializer()), samples_flat)

    b4 = tf.get_variable('fc4/bias', shape=512, initializer=tf.zeros_initializer())
    fc4 = tf.add(tf.matmul(samples_flat, W4), b4)
    fc4 = tf.nn.relu(fc4)



    W5 = tf.map_fn(lambda x: tf.get_variable('fc5/kernel', shape=(512, 512),
                                             initializer=tf.contrib.layers.variance_scaling_initializer()), fc4)

    b5 = tf.get_variable('fc5/bias', shape=512, initializer=tf.zeros_initializer())
    fc5 = tf.add(tf.matmul(fc4, W5), b5)
    fc5 = tf.nn.relu(fc5)



    W6 = tf.map_fn(lambda x: tf.get_variable('fc6/kernel', shape=(512, 2),
                                             initializer=tf.contrib.layers.xavier_initializer()), fc5)

    b6 = tf.get_variable('fc6/bias', shape=2, initializer=tf.zeros_initializer())
    fc6 = tf.add(tf.matmul(fc5, W6), b6)

Есть ли более простой способ реализовать все под одной функцией, рассчитать потери и применить градиенты вместо нескольких раз использования этих функций?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...