使用tf.reduce\u sum(lastconv,axis=2)/tf.reduce\u sum(tf.cast(tf.greater(lastconv,0),tf.float32),axis=2)代替平均池?

2024-04-23 20:38:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究眼轨迹数据和卷积神经网络。 我被要求用tf.reduce_max(lastconv, axis=2)代替MaxPooling层,用tf.reduce_sum(lastconv,axis=2) / tf.reduce_sum(tf.cast(tf.greater(lastconv, 0), tf.float32), axis=2)代替MeanPooling层

我有以下问题,我无法弄清楚。如果你能让我明白那就太好了

  1. reduce\u max函数的内部计算是否与常规MaxPool层相同?两者的输出在维度上是不同的,为什么呢?我不太明白为什么
  2. 为什么我们不能用tf.reduce_mean函数来实现MeanPooling,就像tf.reduce_max是如何用于MaxPooling的
  3. tf.reduce_sum(lastconv,axis=2) / tf.reduce_sum(tf.cast(tf.greater(lastconv, 0), tf.float32), axis=2)这是如何作为一个平均池计算方式工作的,它有什么不同tf.reduce_mean

我确信你可以看出我不明白reduce_max/min/mean/sum在输入张量时做了什么,模型从这些函数中带走了什么

关于数据:数据的形状是(24,4,15,287236),其中24个是被试,4个温度变化和15个轨迹,2x87236是连续的眼睛注视(2个是因为x轴和y轴)。我使用的是LeaveOneOut简历,我对22个科目进行了培训,并对每个科目进行了测试和验证

在创建训练集、验证集和测试集之后,模型中的最终输入分别是(22,60[4x15],287236),(1,60,287236)和(1,60,287236)

我希望我已经提供了足够的关于我所处困境的信息,供你帮助我走出困境。提前谢谢


Tags: 数据函数reduce轨迹tfmeanmaxsum
1条回答
网友
1楼 · 发布于 2024-04-23 20:38:00

reduce\u max取整个尺寸的最大值,因此,例如,如果dim=1,它将减小

[[1,2,3],
 [2,1,3],
 [1,4,0]]

[3,3,4]

另一方面,Max pooling在某些移位窗口中查看最大值,参见https://computersciencewiki.org/index.php/Max-pooling_/_Pooling。这里的主要区别是窗户的形状。其中reduce_max表示窗口是张量的一整片,max pooling表示某个指定的矩形。这也会导致不同的维度(要真正理解这一点,可以看看如果在reduce\u max中使用keepdims=True会发生什么)

替换meanpooling层似乎不采用算术平均值,而是除以正元素数(与一般元素数相反)。这可能就是为什么你不能用减法

相关问题 更多 >