Скажем, у вас есть, например, логический tf.placeholder
, и вы хотите кормить его, когда вы звоните Model.fit
. Как бы вы это сделали? Ниже приведен некоторый исполняемый фиктивный код, иллюстрирующий проблему.
import tensorflow as tf
from tensorflow.keras.layers import Dense, Input, Flatten
from tensorflow.keras.models import Model
# A boolean value that should have some effect of something
do_stuff = tf.placeholder(tf.bool)
# If do_stuff is true, return tf.ones else tf.zeros, and a 1 or 0 label
if_dostuff = lambda: [tf.ones((5, 5)), tf.constant(1)]
if_not_dostuff = lambda: [tf.zeros((5, 5)), tf.constant(0)]
X, Y_true = tf.cond(do_stuff, if_dostuff, if_not_dostuff)
# Make some dummy labels
# Do some random model operation
X_input = Input(shape=(5, 5))
layer_mod = Flatten()(X_input)
layer_mod = Dense(1)(layer_mod)
out_model = Model(inputs=[X_input], outputs=[layer_mod])
# Compile model
out_model.compile(
optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.metrics.binary_crossentropy
)
### Other ops with other models and summaries etc. ###
out_model.fit(...) # What do I do at this point?
Имейте в виду, что логическое значение просто для простоты. На самом деле у меня есть строки, которые являются дескрипторами итераторов, которые нужно передать (в зависимости от того, какой набор данных я хочу обучить).
Как я могу сделать потрясающий model.fit
интерфейс keras с таким макетом?
Альтернативой будет то, что я задаю в этом вопросе