Добавление путей и веса узлов к плотному слою / жесткое кодирование плотного - PullRequest
0 голосов
/ 03 августа 2020

Это странная просьба. Но я бы хотел добавить путь к каждому входу узла 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 похоже, работает с точки зрения того, чтобы не нарушать синтаксис, но я все еще смотрю, будет ли он обучать что-нибудь.

В любом случае, мне просто интересно, знает ли кто-нибудь другой способ сделать это это не сильно замедлит тренировку.

Спасибо за любую помощь!

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