Я пытаюсь определить метод в Python, который я хочу использовать в качестве Metri c, особенно для EarlyStopping (restore_best_weights). Проблема в том, что я пытаюсь сделать прогноз в этом методе (используя текущие параметры), который, похоже, не работает. (Мне нужен прогноз для конкретной c рекурсивной проблемы)
См. Следующий упрощенный пример:
import tensorflow as tf
from tensorflow.keras.layers import *
from tensorflow.keras.activations import *
from tensorflow.keras.models import *
from tensorflow.keras.optimizers import *
from tensorflow.keras.initializers import *
from tensorflow.keras.callbacks import *
import numpy as np
x_train = np.zeros((100, 7))
y_train = np.zeros(100)
model = Sequential()
model.add(Dense(units=7, input_shape=(x_train.shape[1], )))
model.add(Dense(units=1))
model.add(Activation('sigmoid'))
input1 = np.zeros((5, 7), dtype=np.float32)
y_hat = model.predict(input1)
print(y_hat)
def testMetric(y_true, y_pred):
#input1 = np.zeros((5, 7), dtype=np.float32)
#y_hat = model.predict(input1)
return 5
model.compile(
loss="binary_crossentropy",
optimizer=Adam(0.05),
metrics=['binary_accuracy', testMetric]
)
reduce_lr = ReduceLROnPlateau(monitor='testMetric', min_delta=0, factor=0.7, patience=1, verbose=1, mode='max')
early = EarlyStopping(monitor='testMetric', min_delta=0, patience=7, verbose=1, mode='max', baseline=None, restore_best_weights=True)
model.fit(
x=x_train,
y=y_train,
epochs=3,
callbacks=[early, reduce_lr]
)
Все идет нормально, когда я не использую прогноз в моем методе «testMetri c». Но когда я использую прогноз (раскомментирование), я получаю сообщение об ошибке.
RuntimeError: Method requires being in cross-replica context, use get_replica_context().merge_call()
Можно ли использовать прогноз в моем методе?
Я использую Tensorflow 2.2.0
Это было бы полезно для меня :)