[软考考点解析]软件设计师--内存按字节编址

点此查看全部文字教程、视频教程、源代码

1. 概念

内存按字节编址的意思,就是每个地址指向的储存单元可以保存1个字节的数据,也就是8bit(8个二进制位)。

此处注意几个常用单位:

1B(Byte 字节)=8bit

1KB (Kilobyte 千字节)=1024B

1MB (Mega byte 兆字节)=1024KB

1GB (Giga byte 吉字节)=1024MB

然后1024的话是2^10

2. 刷题

题目:

在内存按字节编址。若用存储容量为32K*8bit的存储器芯片构成地址从A0000H到DFFFFH的内存,则至少需要____片芯片。
A 4
B 8
C 16
D 32。

解析:

对32K*8bit,32是2^5,K是2^10,8bit是2^3,所以总共是2^18
对于A0000H-DFFFFH,其实有DFFFFH+1H-A0000H个地址,即有E0000H-A0000H=40000H个地址。H表示16进制,所以40000H是2^(2+16)即为2^18,然后由于按字节编址,每个地址占2^3,所以总共是2^21

最终2^21除以2^18,即为8,选B。

### 缩放点积注意力机制深度学习领域,缩放点积注意力机制是一种用于计算查询(Query)、键(Key)和值(Value)之间关系的方法。具体来说,在该机制下,输入的查询向量会与所有的键向量做点乘操作来衡量它们之间的相似度得分;这些得分会通过softmax函数转换成概率分布形式表示各个位置的重要性权重;最后利用得到的概率加权求和对应的价值向量获得最终输出[^1]。 为了防止大数值下的梯度消失问题以及稳定训练过程中的激活值范围,通常会对上述提到的点乘结果除以根号d_k(d_k代表模型维度),即进行了所谓的“缩放”。 ```python import numpy as np def scaled_dot_product_attention(Q, K, V): d_k = Q.shape[-1] scores = np.matmul(Q, K.T) / np.sqrt(d_k) p_attn = softmax(scores) output = np.matmul(p_attn, V) return output, p_attn def softmax(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum(axis=-1, keepdims=True) ``` ### 多头注意力机制 多头注意力允许模型在同一序列的不同表征子空间内共同关注不同位置的信息。简单而言就是将原始特征映射到多个低维空间里分别执行一次标准版或改进后的自注意层运算后再拼接起来作为整体输出[^2]。这种设计有助于捕捉更丰富的语义结构,并且可以显著提升性能表现特别是在处理长依赖性和复杂模式识别任务上效果明显优于单头版本。 每个头部都独立工作于各自变换过的Q,K,V矩阵之上从而能够平行化加速整个计算流程同时也增加了参数数量使得网络具备更强表达能力去理解多样化上下文环境变化情况。 ```python class MultiHeadedAttention(nn.Module): def __init__(self, h, d_model, dropout=0.1): super().__init__() assert d_model % h == 0 self.d_k = d_model // h self.h = h self.linears = clones(nn.Linear(d_model, d_model), 4) self.attn = None self.dropout = nn.Dropout(p=dropout) def forward(self, query, key, value, mask=None): if mask is not None: mask = mask.unsqueeze(1) nbatches = query.size(0) query, key, value = \ [l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2) for l, x in zip(self.linears, (query, key, value))] x, self.attn = attention(query, key, value, mask=mask, dropout=self.dropout) x = x.transpose(1, 2).contiguous()\ .view(nbatches, -1, self.h * self.d_k) del query del key del value return self.linears[-1](x) def clones(module, N): "Produce N identical layers." return nn.ModuleList([copy.deepcopy(module) for _ in range(N)]) def attention(query, key, value, mask=None, dropout=None): "Compute 'Scaled Dot Product Attention'" d_k = query.size(-1) scores = torch.matmul(query, key.transpose(-2, -1)) \ / math.sqrt(d_k) if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) p_attn = F.softmax(scores, dim=-1) if dropout is not None: p_attn = dropout(p_attn) return torch.matmul(p_attn, value), p_attn ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值