Я работаю в многопоточной среде и передаю весовые коэффициенты функции и воссоздаю там модель. Теперь в моей функции даже model.set_weights(model.get_weights())
не работает.
Я пытался использовать K.clear_session
и устанавливать веса слой за слоем, но ни одна из них не работает.
Целью моего кода было:
def create_model(parameters=None):
"""Create a model from weights."""
from keras.models import Sequential
from keras.layers import Dense
import keras.backend as K
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
if parameters:
model.set_weights(parameters)
else:
model.compile(loss='binary_crossentropy', optimizer='RMSProp', metrics=['accuracy'])
return model
Однако даже ...
def create_model(parameters=None):
"""Create a model from weights."""
from keras.models import Sequential
from keras.layers import Dense
import keras.backend as K
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
if parameters:
model.set_weights(model.get_weights()) # <--------------
else:
model.compile(loss='binary_crossentropy', optimizer='RMSProp', metrics=['accuracy'])
return model
... не работает.
Я получаю ошибку ValueError: Fetch argument <tf.Variable 'dense_1/kernel:0' shape=(8, 12) dtype=float32_ref> cannot be interpreted as a Tensor. (Tensor Tensor("dense_1/kernel:0", shape=(8, 12), dtype=float32_ref) is not an element of this graph.)
при запуске моей программы. Имейте в виду, что это происходит в многопоточной среде.