Tensorflow一个梯度upd的不同辍学配置

2024-06-02 04:47:12 发布

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

我正在尝试实现半监督学习的PI模型 在[1]中介绍。你知道吗

为了计算损失函数,两个前向通过网络 需要相同的数据,因此在每次向前传递中,使用 随机增强。 此外,还使用了dropout,并且在两个过程中都使用了dropout 一个不同的神经元选择应该退出。你知道吗

我不太清楚如何实现所需的退出机制。你知道吗

当我连接两个不同的增强批作为网络的输入时, 这样一个批包含两个不同的数据扩充。 有没有办法在需要一个dropout层的地方添加两个“并行”tf.nn.dropout层,并以某种方式为前半部分定义它 第一批应该用,第二批应该用? 再次拆分网络的输出应该会得到结果 两个“分开”的运行。你知道吗

另一种方法是使用两个独立的session.run调用, 两种不同的数据扩充。不过,我不太确定 然后如何正确地执行渐变更新。你知道吗

[1]https://arxiv.org/abs/1610.02242


Tags: 数据函数模型网络过程tf地方方式
1条回答
网友
1楼 · 发布于 2024-06-02 04:47:12

您可以使用^{}将批处理拆分为两半,分别通过^{}输入每一半,然后用^{}重新连接它们。类似这样的内容(伪代码):

splitted = tf.split( batch, 2, axis = 0 )
first_half = tf.dropout( splitted[ 0 ], rate = 0.5 )
second_half = tf.dropout( splitted[ 1 ], rate = 0.6 ) 
rejoined = tf.concatenate( [ first_half, second_half ], axis = 0 )

相关问题 更多 >