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