Chamando um modelo Keras em um tensor TensorFlow, mas mantendo pesos

NoKeras como uma interface simplificada para o TensorFlow: tutorial eles descrevem como se pode chamar um modelo Keras em um tensor TensorFlow.

from keras.models import Sequential

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=784))
model.add(Dense(10, activation='softmax'))

# this works! 
x = tf.placeholder(tf.float32, shape=(None, 784))
y = model(x)

Eles também dizem:

Nota: ao chamar um modelo Keras, você está reutilizando sua arquitetura e seus pesos. Quando você está chamando um modelo em um tensor, está criando novas operações de TF em cima do tensor de entrada, e essas operações estão reutilizando as instâncias de Variável de TF já presentes no modelo.

Eu interpreto isso como se os pesos do modelo fossem os mesmos emy como no modelo. No entanto, para mim, parece que os pesos no nó Tensorflow resultante são reinicializados. Um exemplo mínimo pode ser visto abaixo:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
# Create model with weight initialized to 1
model = Sequential()
model.add(Dense(1, input_dim=1, kernel_initializer='ones',
                bias_initializer='zeros'))
model.compile(loss='binary_crossentropy', optimizer='adam',
              metrics=['accuracy'])

# Save the weights 
model.save_weights('file')

# Create another identical model except with weight initialized to 0
model2 = Sequential()
model2.add(Dense(1, input_dim=1, kernel_initializer='zeros',
                 bias_initializer='zeros'))
model2.compile(loss='binary_crossentropy', optimizer='adam',
               metrics=['accuracy'])
# Load the weight from the first model
model2.load_weights('file')
# Call model with Tensorflow tensor
v = tf.Variable([[1, ], ], dtype=tf.float32)
node = model2(v)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(node), model2.predict(np.array([[1, ], ])))
# Prints (array([[ 0.]], dtype=float32), array([[ 1.]], dtype=float32))
Por que eu quero fazer isso:

Eu quero usar uma rede treinada em outro esquema de minimização, caso a rede "castigue" os lugares no espaço de pesquisa que não são permitidos. Portanto, se você tiver idéias que não envolvam essa abordagem específica, isso também será muito apreciado.

questionAnswers(1)

yourAnswerToTheQuestion