您需要添加屏蔽操作逻辑作为TensorFlow graph的一部分。具体而言,control flow operators类似tf.logical_and,tf.logical_or和tf.case允许您在运行模型时有条件地选择所需的数据。
例如,下面的代码显示了如何基于两个训练数据或标签输入的状态建立一个4元张量。你应该能够对你的情况应用类似的逻辑。
def const_v(val):
return tf.constant(val, tf.float32)
def const_1():
return const_v(1)
def const_0():
return const_v(0)
def cond_and(cond_1, cond_2, val_1, val_2):
return tf.logical_and(tf.equal(cond_1, val_1),
tf.equal(cond_2, val_2))
def vec4(c1, c2, c3, c4):
return [const_v(c1), const_v(c2), const_v(c3), const_v(c4)]
# c1 c2 vector
# 1 1 [1, 0 , 0 ,0]
# 1 0 [0, 1, 0, 0]
# 0 1 [0, 0, 1, 0]
# 0 0 [0, 0, 0, 1]
def combined_conditions(cond_1, cond_2):
return tf.stack(tf.case({cond_and(cond_1, cond_2, const_1(), const_1()): lambda: vec4(1, 0, 0, 0),
cond_and(cond_1, cond_2, const_1(), const_0()): lambda: vec4(0, 1, 0, 0),
cond_and(cond_1, cond_2, const_0(), const_1()): lambda: vec4(0, 0, 1, 0),
cond_and(cond_1, cond_2, const_0(), const_0()): lambda: vec4(0, 0, 0, 1)
}, default=lambda: vec4(0, 0, 0, 0), exclusive=True))
林不知道这会做伎俩。让我举一个具体的例子。假设我的特征是长度为100,000的矢量。我用10万步训练。在每一步中,我想用掩码向量中的1和0掩码输入要素,其中1的个数只是训练步数。图表不知何故必须知道这个数字,并在每一步创建一个新的面具。请注意,它所需的数字不能从输入数据集本身收集。 –
我从来没有使用过它们,但看起来您可以从[Training Utility](https://www.tensorflow.org/versions/master/api_guides/python/train#Training_Utilities)函数中获取培训步骤 - - tf.train.get_global_step或tf.train.global_step。这加上图形逻辑和一些聪明的Python可能会解决你的问题。 –