В моей нейронной сети я пытаюсь поддерживать активный отсев во время фазы прогнозирования. Я пытаюсь сделать это с помощью tenorflow.keras.backend.set_learning_phase (1) в tenorflow 2.0 RC.
Проблема возникает, когда я вызываю model.compile, который, кажется, отключает выпадение во время фазы прогнозирования.
Следующий код показывает, как я устанавливаю фазу обучения. Перед составлением модели прогнозы являются полуслучайными, как и ожидалось. После того, как модель скомпилирована, предсказания больше не являются полуслучайными, даже если фаза обучения все еще составляет 1
import tensorflow as tf
from tensorflow import keras
import tensorflow.keras.backend as K
from tensorflow.keras import layers
# load boston housing data
from tensorflow.keras.datasets import boston_housing
(x_train, y_train), (x_test, y_test) = boston_housing.load_data()
# define model
K.clear_session()
K.set_learning_phase(1)
x = keras.Input(shape=(13,))
y = layers.Dense(10, activation='relu')(x)
y = layers.Dropout(0.5)(y)
y = layers.Dense(1)(y)
model = keras.Model(inputs=x,outputs=y)
# these results will have randomness
model.predict(x_test[0:1])
model.predict(x_test[0:1])
model.predict(x_test[0:1])
model.compile(optimizer="adam", loss='mse')
# now that model is compiled randomness is lost
model.predict(x_test[0:1])
model.predict(x_test[0:1])
model.predict(x_test[0:1])
print(K.learning_phase()) # == 1
. Это работало для меня в прошлых версиях тензор потока