Установить индивидуальные веса Tensorflow / Keras - PullRequest
0 голосов
/ 09 июля 2020

Я хочу иметь возможность либо сохранять постоянным, либо устанавливать набор весов для чего-то внутри слоя. Я не мог понять, как это сделать раньше, поэтому я просто вручную построил свой собственный NN.

Казалось, что он работал (по крайней мере, без проблем с синтаксисом) для всего, кроме input, который требовал полного ввода size (последние 27 значений вектора длины 29 obs для Ant-v2 в baselines-tf), а не 27 конкатенированных Input (1).

def network_fn(input_shape):
    # Attempt to create NN such that specific links' weights can be fixed 
    x_inputs = tf.keras.Input(27)
    print('x_inputs')
    print(x_inputs[1].get_weights())
    input('')
    # x_inputs = tf.keras.Input(1)
    # for x in range(1,26):
    #     tf.keras.layers.concatenate([x_inputs,tf.keras.Input(1)],axis=-1)

    layer1 = tf.keras.layers.Dense(units=1, kernel_initializer=ortho_init(np.sqrt(2)),
                                activation=activation)(x_inputs)
    for x1 in range(1,63):

        tf.keras.layers.concatenate([layer1,tf.keras.layers.Dense(units=1, kernel_initializer=ortho_init(np.sqrt(2)),
                                                                    activation=activation)(x_inputs)],axis=-1)
    layer2 = tf.keras.layers.Dense(units=1, kernel_initializer=ortho_init(np.sqrt(2)),
                                activation=activation)(layer1)
    for x2 in range(1,31):

        tf.keras.layers.concatenate([layer2,tf.keras.layers.Dense(units=1, kernel_initializer=ortho_init(np.sqrt(2)),
                                                                    activation=activation)(layer1)],axis=-1)
    layer3 = tf.keras.layers.Dense(units=1, kernel_initializer=ortho_init(np.sqrt(2)),
                                activation=activation)(layer2)
    for x3 in range(1,7):

        tf.keras.layers.concatenate([layer3,tf.keras.layers.Dense(units=1, kernel_initializer=ortho_init(np.sqrt(2)),
                                                                    activation=activation)(layer2)],axis=-1)
    network = tf.keras.Model(inputs=[x_inputs], outputs=[layer3])

    return network

return network_fn

Любая помощь, чтобы выяснить, как установить индивидуальный веса, которые я хочу, или чтобы иметь возможность использовать 27 конкатенированных Input (1)?

...