实习面试复习

news/2024/7/8 4:58:02

商汤-上海 IRDC-算法开发实习生

根据面经复习

手写Conv2d

BN,LN/LSTM/GRU/Transformer一些基础

手写conv2d

def corr2d(X, K):
    n, m = X.shape
    h, w = K.shape
    Y = torch.zeros((n - h + 1, m - w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            Y[i, j] = (X[i:i + h, j:j + w] * K).sum()
    return Y

class Conv2D(nn.module):
    def __init__(self, kernel_size):
        self.weight = nn.Parameter(torch.rand(kernel_size))
        self.bias = nn.Parameter(torch.zeros(1))
    def forword(self, x):
        return corr2d(x, self.weight) + self.bias

BN,batchNorm,批归一化

独立同分布假设:假设训练数据和测试数据是满足相同分布的。
如果输入层数据不做归一化,很多时候网络不会收敛。

每一层经过运算之后,前面层训练参数的更新将导致后面层输入数据分布的变化。并且后面的层会将网络前几层微小的改变累积放大。会导致两个后果:

  1. 数值区别不大
  2. 导数很小,反向传播力度很小,网络难以收敛

LSTM, 长短期记忆网络

  • 忘记门
  • 输入门
  • 输出门

GRU,门控循环单元

  • 重置门
  • 更新门

2022-11-22 一面

  1. 自我介绍
  2. 手写代码,判断两个方阵整体经过旋转后是否能完全一致
  3. 项目。问了问创新点在哪,职责是什么,有没有跑过实验。
  4. pytorch上的多机多卡并行,单机多卡并行,数据并行,模型并行具体都是什么
  5. 反问

2022-11-23 二面

  1. 自我介绍

  2. 问项目。问的很详细。除了项目本身

    1. 一个GAN相关的,问了对比其他方法有什么好处,劣势。为什么选择GAN
    2. 异常分割相关,做一个综述。
  3. 算法题伪代码。完全背包最小方案数

小米-武汉 视觉图像算法工程师实习生

根据面经复习:https://www.nowcoder.com/discuss/post/398861072390778880

  1. 逐个介绍项目,问的很详细

  2. 从公式的角度说明一下L2损失为什么会平滑

  3. 解决模型过拟合的方法

  4. 为什么L1正则化可以缓解过拟合

  5. 代码

(1)快排

(2)手写卷积

正则项

L0,L1,L2 —— 简书

L1稀疏,L2平滑

为什么L1稀疏,L2平滑

image-20221123095619527 image-20221123100053744

L1为什么可以缓解过拟合

L1范数是指向量中各个元素绝对值之和。

参数值大小和模型复杂度是成正比的。越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,较大的参数值才能产生较大的导数。这就容易产生过拟合。

因此复杂的模型,其L1范数就大,最终导致损失函数就大。最小化损失函数就是对参数值的大小进行限制。

解决过拟合的办法

  1. 数据增广
  2. dropout
  3. 正则化 权值衰减weight decay
  4. 提前停止

代码

快排

void qsort(int q[], int l, int r)
{
    if (l >= r) return ;
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j)
    {
        do i ++; while (q[i] < x);
        do j --; while (q[j] > x);
        if (i < j) swap(q[i], q[j]);
    }
    qsort(q, l, j);
    qsort(q, j + 1, r);
}

卷积

def corr(X, K):
    h, w = k.shape
    H, W = X.shape
    Y = torch.zeros((H - h + 1, W - w + 1))
    for i in range(Y.shape[0]):
        for j in range(Y.shape[1]):
            Y[i, j] = (X[i:i+h, j:j+w] * K).sum()
    return Y

class Covn2d(nn.module):
    def __init__(self, kernel_size):
        self.weight = nn.Parameter(torch.rand(kernel_size))
        self.bias = nn.Parameter(torch.zeros(1))
    def forword(self, x):
        return corr(x, self.weight) + self.bias

http://lihuaxi.xjx100.cn/news/295603.html

相关文章

某些设置由你的组织来管理

今天莫名其妙Windows更新出现&#xff1a;*某些设置由你的组织来管理 我们来看看如何恢复吧。 根据上面的图片我们可以知道&#xff0c; 可查看配置的更新策略&#xff1a; 可以看到设备设置的策略有下面几个&#xff1a; 解决方案 这个时候我们就要进入设置更改那些策略即…

docker(七)SpringBoot集群搭建 Nginx负载

启动多个SpringBoot容器 1 先准备一个springboot项目2 把SpringBoot项目打成jar包&#xff08;jar包名称&#xff1a;springboot-mybatis-demo-0.0.1-SNAPSHOT.jar&#xff09;&#xff0c;上传至服务器中 我这里使用的是 FinalShell 连接的服务器&#xff0c;直接拖拽可以实现…

react redux(一)

1.设计思想 &#xff08;1&#xff09;Web 应用是一个状态机&#xff0c;视图与状态是一一对应的。 &#xff08;2&#xff09;所有的状态&#xff0c;保存在一个对象里面。 基本概念和 API 1 Store Store 就是保存数据的地方&#xff0c;你可以把它看成一个容器。整个应用只能…

代码随想录训练营day50, 买卖股票的最佳时间III, IV

买卖股票的最佳时间III 这里的关键就是至多买卖两次, 所以可以买一次, 买两次, 也可以不买卖 dp数组含义. 一天有五个状态 0 没有操作 1 第一次买入 2 第一次卖出 3 第二次买入 4 第二次卖出 dp[i][j]中, i表示第i天, j表示五种状态, 确定递推公式, 和之前的股票问题…

什么是虚拟dom,说一下react和vue的diff算法

什么是虚拟dom 组件第一次渲染的时候会生成一个虚拟dom和一个真实的dom然会会把真实的dom渲染到页面上 如果这个组件受到响应式数据变化的影响&#xff0c;需要重新渲染时&#xff0c;它仍然会重新调用render函数&#xff0c;创建一个新的虚拟dom树&#xff0c;这时会用新虚拟…

Microsoft SQL Server 图书管理数据库的建立

文章目录题目描述创建数据库使用数据库创建三个表外码的表示形式结果展示题目描述 – 新建 “图书管理数据库" – 其中包含三个关系 – 图书&#xff08;编号&#xff0c;图书名&#xff0c;作者&#xff0c;出版社&#xff0c;类型&#xff0c;单价&#xff09; – 借阅…

Ansys Zemax | 使用 OpticStudio 进行闪光激光雷达系统建模(中)

在消费类电子产品领域&#xff0c;工程师可利用激光雷达实现众多功能&#xff0c;如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同&#xff0c;但是 “闪光激光雷达” 解决方案通常都适用于在使用固态光学元件的目标场景中生成可检测的点阵列。凭借具有针对…

Linux NTP时间同步服务、NFS网络文件共享存储服务

目录 NTP服务 ntp服务器的安装 ntp时间同步的配置 同步性测试 ntpd和ntpdate的区别 国内常用的NTP服务器地址和IP NFS 服务 NFS原理图​编辑 NFS配置 nfs的优缺点 优点&#xff1a; 缺点&#xff1a; NTP服务 NTP服务器【Network Time Protocol&#xff08;NTP&#xff…