Это странная просьба. Но я бы хотел добавить путь к каждому входу узла Dense следующим образом:
--> inputs[0] ----> in1_to_h1a ------------ [h1a]
------------------> inputs[0] ----------/
/
--> inputs[1] ----> in2_to_h1a -------/
------------------> inputs[1] -------/
/
... /
/
--> inputs[7] ---> in64_to_h1a /
------------> inputs[7] --------/
где для обычного слоя Dense путь inX_to_hXa не будет там. Здесь [hXa] представляет один узел.
Вот моя текущая попытка, когда мне пришлось разбить сеть на несколько плотных (unit = 1) путей:
inputs = tf.keras.Input(27)
layer1 = {}
for x4 in range(8):
layer1['h{}a'.format(x4+1)] = tf.keras.layers.Dense(units=1,name=('h{}a'.format(x4+1)),kernel_initializer=ortho_init(np.sqrt(2)))(inputs)
hXa_to_hXb = {}
hXb = {}
hXb_add = {}
for x6 in range(8):
hXa_to_hXb['h1a_to_h{}b'.format(x6+1)] = tf.keras.layers.Dense(units=1,name=('h1a_to_h{}b'.format(x6+1)),kernel_initializer=ortho_init(np.sqrt(2)))(layer1['h1a'])
hXb['h{}b'.format(x6+1)] = tf.keras.layers.concatenate([hXa_to_hXb['h1a_to_h{}b'.format(x6+1)],layer1['h1a']],axis=1)
for x5 in range(7):
hXa_to_hXb['h{}a_to_h{}b'.format(x5+2,x6+1)] = tf.keras.layers.Dense(units=1, name=('h{}a_to_h{}b'.format(x5+2,x6+1)), kernel_initializer=ortho_init(np.sqrt(2)))(layer1['h{}a'.format(x5+2)])
hXb_add['h{}b_add'.format(x6+1)] = tf.keras.layers.concatenate([hXa_to_hXb['h{}a_to_h{}b'.format(x5+2,x6+1)],layer1['h{}a'.format(x5+1)]],axis=1)
hXb['h{}b'.format(x6+1)] = tf.keras.layers.concatenate([hXb['h{}b'.format(x6+1)],hXb_add['h{}b_add'.format(x6+1)]])
layer2 = {}
for x7 in range(8):
layer2['h{}b'.format(x7+1)] = tf.keras.layers.Dense(units=1,name=('h{}b'.format(x7+1)),kernel_initializer=ortho_init(np.sqrt(2)))(hXb['h{}b'.format(x7+1)])
hXb_to_outX = {}
outX = {}
outX_add = {}
for x9 in range(8):
hXb_to_outX['h1b_to_out{}'.format(x9+1)] = tf.keras.layers.Dense(units=1,name=('h1b_to_out{}'.format(x9+1)),kernel_initializer=ortho_init(np.sqrt(2)))(layer2['h{}b'.format(1)])
outX['out{}'.format(x9+1)] = tf.keras.layers.concatenate([hXb_to_outX['h1b_to_out{}'.format(x9+1)],layer2['h1b']],axis=1)
for x8 in range(7):
hXb_to_outX['h{}b_to_out{}'.format(x8+2,x9+1)] = tf.keras.layers.Dense(units=1, name=('h{}b_to_out{}'.format(x8+2,x9+1)), kernel_initializer=ortho_init(np.sqrt(2)))(layer2['h{}b'.format(x8+2)])
outX_add['out{}_add'.format(x9+1)] = tf.keras.layers.concatenate([hXb_to_outX['h{}b_to_out{}'.format(x8+2,x9+1)],layer2['h{}b'.format(x8+2)]],axis=1)
outX['out{}'.format(x9+1)] = tf.keras.layers.concatenate([outX['out{}'.format(x9+1)],outX_add['out{}_add'.format(x9+1)]])
outputs = {}
for x10 in range(8):
outputs['out{}'.format(x10+1)] = tf.keras.layers.Dense(units=1,name=('out{}'.format(x10+1)),kernel_initializer=ortho_init(np.sqrt(2)))(outX['out{}'.format(x10+1)])
outs = tf.keras.layers.concatenate([outputs['out1'],outputs['out2'],outputs['out3'],outputs['out4'],outputs['out5'],outputs['out6'],outputs['out7'],outputs['out8']],axis=1)
outs_reformatting = tf.keras.layers.Dense(units=8,name='out_reformatting',kernel_initializer=ortho_init(np.sqrt(2)))(outs)
network = tf.keras.Model(inputs=[inputs],outputs=[outs_reformatting])
It похоже, работает с точки зрения того, чтобы не нарушать синтаксис, но я все еще смотрю, будет ли он обучать что-нибудь.
В любом случае, мне просто интересно, знает ли кто-нибудь другой способ сделать это это не сильно замедлит тренировку.
Спасибо за любую помощь!