我正在Keras中使用Tensorflow后端构建CNN,我想介绍一个自定义图层,该图层应执行以下操作:
就目前而言,我设法构建了一个模型,在该模型中,我选择了输入张量的前25%像素,并仅从它们中创建了相同大小的输出张量。但这不是随机抽样。
理想情况下,我想使用张量流等效项:np.random.choice(input_tensor, num_samples, input_tensor_normalized)
,其中第三个参数是要遵循的概率分布。请注意,这仅适用于一维np.array。
我听说过tf.random.multinomial
,但是它已经贬值了,tf.random.categorical
将logits
作为输入(我不认为这是我的情况),并且没有提出概率分布。
一种可能是将输入张量整形为向量,如果可以的话,在Tensorflow中执行一维采样,构造一个相似的向量,其采样值在相应的索引处为零,然后在其他位置为零,然后再将其整形为张量。
还有其他想法吗?
我应该搬到PyTorch吗?
非常感谢
答案 0 :(得分:0)
您仍然可以使用tf.random.categorical
。 logits只是未归一化的日志概率。因此,如果您已经准备好进行概率分布,则可以执行以下操作:
samples = tf.random.categorical(tf.log(input_tensor_normalized), num_samples)