实习面试复习

商汤-上海 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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在准备java实习面试时,你需要做的第一件事就是熟悉java语言的基础知识,并且要熟悉相关的语法规则和编程技巧。同时,你还需要对实习的项目有一个全面的了解,可以让面试官知道你的知识和技能能够适用于实习项目。此外,你还要准备一些常见的java实习面试题,以便做好准备,应对面试官的提问。 ### 回答2: 准备Java实习面试的关键是全面深入地掌握Java的基础知识和相关面试题目。以下是一些可以帮助准备Java实习面试的建议: 1. 加强基础知识:熟悉Java的基础语法、面向对象编程(OOP)的概念以及常用的数据结构和算法。理解Java中的类、对象、继承、多态等基本概念,并能够熟练运用。 2. 复习常用类库和API:熟悉Java的常用类库,如集合框架(List、Set、Map等)、多线程、输入输出流等。掌握Java的API文档,了解各种类的常用方法和使用场景。 3. 解决实际问题:通过解决一些实际问题来实践和加深对Java知识的理解。可以参加一些开源项目,了解实际的业务场景和解决方案。 4. 多做练习题:通过做一些常见的面试题目,加深对语法和概念的理解,并提高编程能力。可以寻找一些Java面试题目的练习册或在线资源进行刷题。 5. 提前了解公司和岗位要求:在面试前提前了解公司的业务、产品和文化,以及实习岗位的要求。根据公司和岗位的特点,备好可以展示自己技能和经验的项目或作品。 6. 面试准备:熟悉面试流程,准备常见的面试问题,例如项目经验、解决问题的能力、团队合作等等。在面试前尽量进行模拟面试,自己提问自己,并对自己的回答进行评估和调整。 7. 自信和积极心态:面试时保持自信和积极的心态,面试官会更看重你的学习能力和解决问题的思路。不仅要展示自己的知识和经验,还要强调自己的成长潜力和适应能力。 总之,准备Java实习面试要从基础知识、实践能力、项目经验、面试准备等多个方面进行全面的准备。掌握Java编程语言和常用类库,提高解决问题的能力,并展示自己的学习潜力和适应能力,将会有更好的面试表现。 ### 回答3: 准备Java实习面试的关键是要充分了解Java编程语言的基础知识,并能够熟练应用到实际项目中。以下是一些准备面试的建议: 1. 复习Java的基础知识:包括数据类型、变量、循环结构、条件语句、面向对象编程等内容。同时,还需熟悉Java的常用类库,如集合框架、IO操作、异常处理等。 2. 深入学习面向对象编程:Java是一门面向对象的编程语言,了解面向对象的特性、原则和设计模式对于面试非常重要。掌握常用的设计模式,如单例模式、工厂模式、观察者模式等。 3. 线程和并发编程:Java是一门支持多线程开发的语言,需要熟悉线程的基本概念、创建和管理线程的方法,以及线程间的同步与通信机制。 4. 熟悉常用的开发框架和工具:例如Spring、Hibernate、MyBatis等。了解这些框架的基本原理和使用方法,并能够在面试中展示你对这些工具的了解和应用能力。 5. 多写Java代码:通过刷LeetCode、完成小项目等方式,提升自己的编程能力和思维逻辑。在面试中,能够用清晰、简洁的代码解决问题将会给面试官留下深刻的印象。 6. 面试准备:准备一些常见的Java面试题,包括基础知识、算法和数据结构、数据库等方面,并且进行详细的复习和理解。在面试前做一些模拟面试,提前预演可能会被问到的问题,增加自信心。 7. 了解公司和职位需求:在准备面试前,要仔细阅读岗位职责和公司要求。了解公司的产品和技术栈,根据自己的经验和技能进行针对性的准备和提问。 最重要的是,要保持学习的态度和开放的思维,能够在面试中展示自己的技术能力和解决问题的能力。同时,也要有自己的项目经验和实习经历来支撑自己的回答,展示你在实践中能够适应并解决真实问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值