win8和ubuntu双系统相互引导的问题

泪奔了,我的win8和ubuntu双系统终于可以相互引导了,搞了2天了。

本来在网上找了win8装ubuntu双系统的教程,一步一步小心翼翼的照着教程安装,安装好后用EasyBCD设置了下ubuntu的引导,以为就完美的可以双系统切换了,

但没想到win8竟然引导不了ubuntu,只能进入win8,ubuntu下的引导菜单也无效,无奈每次切换系统只能进入BIOS进行切换,好麻烦的说。。。。

于是我就各种百度,google,看了好多的资料,到后来终于明白了原来预装win8的电脑是EFI模式的,用EasyBCD在win8下设置的引导是完全不起作用的,

看到网上好多资料说要重新用EFI模式来装ubuntu,但是我又不想重装,感觉好麻烦,于是又各种无闹google,黄天不负有心人,终于让我找到一个神贴,解决我的问题了!!!

http://tieba.baidu.com/p/2805772637

本来我也只是抱着试试的心态,折腾了2个小时左右终于搞好了。

首先,要先确定下自己的哪个分区是预装的EFI分区,我的是/dev/sda2,怎么确认呢?

   我们可以先查看下自己的磁盘中的所有分区,打开Terminal,输入

   sudo df

   

   如图说是,/dev/sda2是我的EFI分区,它的状态是/boot/efi,上面的/dev/sda12是我分配出来的分区中装ubuntu时弄的/boot分区,所以状态是/boot

   但是上面的那个神贴中的作者的EFI分区的状态和我的不一样,他的是/boot,所以一开始我就有点纳闷了,为什么我的电脑这么奇怪,搞得我不清楚

   我的EFI分区到底是sda2还是sda12,所以我就照着那个神贴测试了一下,也就是下面的第2步

2)建一个文件夹,把我的sda2挂载出来,然后用ls看到这个分区里面有BOOT,有EFI,说明确实是我的EFI分区。记住了,我的EFI分区是/dev/sda2,

    你需要确定你自己的。

  

   这时我终于相信我的EFI分区在sda2了。。。。。好了废话不多说

说了这么多,还没进入正题。。。。。在win8安装好ubuntu后不能引导,不想在EFI模式下重装ubuntu,但是又要两个系统相互引导,该怎么办呢?

下面才是重点:打开terminal

a)创建这个文件夹:
sudo mkdir /mnt/efi
b)挂载EFI分区(记得改成你自己的)到刚才的文件夹里:
sudo mount /dev/sda2 /mnt/efi
c)打开一个Administrator权限的文件管理器:
sudo nautilus /mnt/efi
d)打开EFI/Boot,看到里面有一个bootx64.efi,把它改名成bootx64.efi.old,以后不用它了
e)打开EFI/ubuntu,里面有一个grubx64.efi,这个是grub的启动文件,把它复制到刚才的EFI/Boot里面,改名成bootx64.efi,顶替Windows的loader。

(在这里我的电脑重启了一下)

   进入ubuntu,打开terminal,输入
sudo update-grub2
- 看到下面这样:
neil@neil-ThinkPad-T440s:/boot/efi/EFI/Boot$ sudo update-grub2
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.11.0-12-generic
Found initrd image: /boot/initrd.img-3.11.0-12-generic
Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done
- 发现上面的windows boot manager直接被找到了。这也就是为什么之前替换了bootx64.efi,而不是bootmgfw.efi。我们需要留着bootmgfw.efi来启动windows。

(上面的神贴说到这里,双系统就可以正常工作了,但是我重启后发现还是不能,于是就又仔细的看了一便那个帖子,发现我关闭secure boot,于是进入bios把

    secure boot关闭,然后重启,在grub下选择进入win8,奇迹般的发现可以引导win8了,高兴死了,然后,我又试下了在win8下引导ubuntu,竟然也可以引导了!!!

    哈哈哈哈。。。)
到此,双系统已经可以正常工作了。EFI分区会自动挂载到/boot/efi下面,这样就是为什么EFI模式的ubuntu可以启动windows,而Legacy模式的ubuntu不能,因为Legacy模式的ubuntu不会挂载这个分区。


<think>好的,我现在要比较Batch Normalization(BN)Layer Normalization(LN)的区别、适用场景以及在深度学习中的对比。首先,我需要回忆这两种标准化方法的基本概念原理。 Batch Normalization是在2015年由Sergey IoffeChristian Szegedy提出的,主要用于加速深度神经网络的训练。它的核心思想是对每个小批量(mini-batch)的数据进行标准化处理,即对每个神经元的输入进行归一化,使其均值接近0,方差接近1。这样可以减少内部协变量偏移(Internal Covariate Shift),从而加快训练速度,并允许使用更高的学习率。BN通常在卷积神经网络(CNN)中应用广泛,特别是在图像处理任务中,比如ResNet等模型就大量使用了BN层[^1]。不过,BN的一个缺点是当batch size较小时,效果会变差,因为均值方差的估计不准确。比如,在训练TurboAE时,需要非常大的batch size(超过500)才能有效平均噪声影响。 接下来是Layer Normalization,由Jimmy Lei Ba等人在2016年提出。与BN不同,LN是对同一层内所有神经元的输出进行标准化,即对每个样本的所有特征进行归一化。这种方法不依赖于batch size的大小,因此在batch size较小或动态变化的情况下表现更好。LN在循环神经网络(RNN)Transformer模型中应用较多,比如在自然语言处理任务中,由于序列长度可变,使用LN可以更好地处理不同长度的输入。例如,DeepDR-Transformer模块在处理眼底图像分类任务时,可能使用了类似LN的结构来保持稳定性[^2]。 两者的主要区别在于归一化的维度不同。BN在batch维度特征维度上进行归一化,而LN是在特征维度层维度上进行。因此,BN的效果受batch size影响较大,而LN则不受此限制。此外,BN在训练推理时的行为不同,需要维护移动平均的均值方差,而LN在训练推理时计算方式一致,不需要额外参数。 适用场景方面,BN适合固定深度的模型较大的batch size,比如图像分类任务中的CNN。LN则适合变长序列或小batch size的情况,如NLP中的Transformer或RNN。此外,在强化学习或生成对抗网络(GAN)中,由于batch size可能不稳定,LN也更适合。 需要进一步验证的是,LN是否真的在Transformer中被广泛使用,以及BN在batch size较小时的具体表现。根据引用[1],TurboAE需要大batch size才能有效,这说明BN对batch size敏感,而LN可能更适合小batch场景。同时,引用[2]提到的DeepDR-Transformer使用了全局平均池化全连接层,可能未明确提到LN,但Transformer架构通常使用LN,如原始论文中的设计。 总结下来,BNLN的主要区别在于归一化的维度对batch size的依赖,适用场景则根据模型类型任务需求来选择。</think>### Batch Normalization vs Layer Normalization: 区别与适用场景 #### 1. **核心区别** - **Batch Normalization (BN)** 对每个神经元的输入按 **批次维度** 进行标准化。假设输入维度为 $[B, C, H, W]$(如CNN中的图像数据),BN会对每个通道(Channel)的所有样本、空间位置计算均值方差,公式为: $$ \mu_c = \frac{1}{B \cdot H \cdot W} \sum_{b=1}^B \sum_{h=1}^H \sum_{w=1}^W x_{b,c,h,w} \\ \sigma_c^2 = \frac{1}{B \cdot H \cdot W} \sum_{b=1}^B \sum_{h=1}^H \sum_{w=1}^W (x_{b,c,h,w} - \mu_c)^2 $$ 适用于 **固定输入结构** 的任务(如图像分类)。 - **Layer Normalization (LN)** 对每个样本的所有神经元输出按 **特征维度** 进行标准化。假设输入维度为 $[B, L, D]$(如Transformer中的序列数据),LN会对每个样本的所有位置特征计算均值方差: $$ \mu_b = \frac{1}{L \cdot D} \sum_{l=1}^L \sum_{d=1}^D x_{b,l,d} \\ \sigma_b^2 = \frac{1}{L \cdot D} \sum_{l=1}^L \sum_{d=1}^D (x_{b,l,d} - \mu_b)^2 $$ 适用于 **变长序列** 或 **小批量数据** 的场景(如NLP、强化学习)。 --- #### 2. **适用场景对比** | **特性** | **Batch Normalization** | **Layer Normalization** | |------------------------|--------------------------------------|--------------------------------------| | **数据依赖** | 依赖批次统计,需要较大batch size | 单样本统计,与batch size无关 | | **任务类型** | 图像处理(CNN)、固定输入长度的任务 | NLP(Transformer)、RNN、强化学习 | | **训练稳定性** | 对batch size敏感,小批次效果下降 | 对batch size鲁棒 | | **推理行为** | 使用移动平均统计量 | 直接计算当前样本统计量 | --- #### 3. **性能影响** - **BN的优势与局限** 在图像任务中显著加速收敛,但受限于batch size。例如,在TurboAE训练中,batch size需大于500才能有效平均噪声影响。 - **LN的优势与局限** 更适合动态输入或小batch场景。例如,Transformer通过LN处理变长序列,而DeepDR-Transformer在医学图像分类中可能依赖类似结构[^2]。 --- #### 4. **代码示例对比** ```python # Batch Normalization (PyTorch) import torch.nn as nn bn = nn.BatchNorm2d(num_features=64) # 用于CNN # Layer Normalization (PyTorch) ln = nn.LayerNorm(normalized_shape=512) # 用于Transformer ``` ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值