Я запутался с реализацией следующих функций в 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)
Есть ли более простой способ реализовать все под одной функцией, рассчитать потери и применить градиенты вместо нескольких раз использования этих функций?