卷积在batch之间是怎么操作的啊

如题 想卷积在batch之间是怎么操作的啊 共享权重吗 batch的增加会增加网络中的参数量吗

batch越大参数收敛的越快,batch的更改不会影响网络结构增加网络中的参数,只会增加每次来回的计算量。
你可以简单的理解为乘客与公交车的关系,一个乘客公交车也可以走,装一批乘客也是可以走,只不过人越多公交车的负载越大

该回答引用ChatGPT

在深度学习中,卷积层经常使用批处理(batch)进行训练。批处理指的是将多个训练样本一起输入到神经网络中进行训练,这样可以提高计算效率,同时也有助于网络的收敛。

卷积在batch之间是通过共享权重来实现的。在卷积层中,每个卷积核的权重是相同的,因此可以将多个样本的卷积操作合并为一个操作,从而减少计算量。同时,共享权重也有助于防止过拟合的发生,提高了模型的泛化能力。

批处理会增加网络中的参数量,因为每个批次都会对权重进行更新。但是相对于样本数量来说,批处理的参数量增加的比较小,因此一般不会对网络的计算量和存储量产生显著的影响。此外,批处理也有利于减少过拟合,提高模型的泛化能力。

比如你的特征维度是fea_dim,第一层神经元个数是cell1_dim,那么第一层网络权重就是W1=[fea_dim,cell1_dim];
第二层神经元个数是cell2_dim,那么第二层网络权重W2=[cell1_dim,cell2_dim];
最后一层神经元个数是cell3_dim,那么第三层网络权重就是W3=[cell2_dim,cell3_dim];

你一个batch的特征进入上面的网络,input=[batch,fea_dim],那么结果就是[batch,cell3_dim]
你不分batch,而是所有样本进入上面网络,input=[samples_all,fea_dim],那么结果就是[samples_all,cell3_dim]
所以你看网络每层的权重参数并没变,但batch越大每层的计算量增加了。

  • 看下这篇博客,也许你就懂了,链接:写一个自己的batch函数
  • 除此之外, 这篇博客: 写一个自己的batch函数中的 三、自己的batch函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 读函数这个事吧,对于学渣来说还是太头疼了。基本上的意思就是如果你想用TensorFlow写自己batch就要用到这两个函数。

    def get_Batch(data, batch_size):
        #print(data.shape)测试用的,忽略这一行
        input_queue = tf.train.slice_input_producer([你自己数据的名字噢], num_epochs=这块一定要改好,小编吃过亏, shuffle=True(随机), capacity=64 )
        x_batch = tf.train.batch(input_queue, batch_size=batch_size, num_threads=1, capacity=64, allow_smaller_final_batch=False)
        return x_batch
    #引用函数就可以了
    f = get_Batch(train_data,batch_size)
    #f就是你的训练集

    不知道还有什么补充的没有,如果想起来会修改的。如果有说错的地方,大家要指出来啊。

    今日的文案收工啦!