【发布时间】:2018-06-30 16:51:34
【问题描述】:
例如:
我有一个输入tensor(input),形状为(?,10)dtype=float32,第一个维度表示batch_size。
还有一个面具tensor(mask),形状为(?,10)。 mask[sample_number] 和 [True,True,False,...] 类似,表示面具
标签张量(avg_label),形状为(?,),表示每个样本的掩码位置的正确平均值
我想训练模型,但找不到获得输出的好方法。
tf.reduce_...(例如 tf.reduce_mean)函数似乎不支持关于屏蔽的论点。
我尝试tf.boolean_mask,但它会将输出形状扁平化为一维,抛出sample_number维度,因此无法区分样本
我考虑过tf.where,比如:
masked=tf.where(mask,input,tf.zeros(tf.shape(input)))
avg_out=tf.reduce_mean(masked,axis=1)
loss=tf.pow(avg_out-avg_label,2)
但是上面的代码肯定是行不通的,因为 False 设置为 0 会改变 avg。如果使用 np.nan ,它总是会得到 nan。我想知道做reduce操作时是否有一个表示缺席的值。
我该怎么做?
【问题讨论】:
-
您的问题不清楚。您有一个形状为 (?, 10) 的输入张量,一个形状为 (?, 10) 的蒙版张量,并且您想获得输入的平均值,仅适用于
mask=True的那些值。对吗? -
对,就是这个意思。
标签: python tensorflow artificial-intelligence conv-neural-network