1.特斯拉电池安全性不如比亚迪?国产车亮了!
昨晚(周四)20点整,首期线外邦粉丝汽车沙龙正式开聊,交广台《汽车世界》主持人林海成为线外邦首期沙龙的“大咖”主持,跟粉丝在微信群里进行了互动交流。话题涉及选车、购车、新能源、用车,不到一个小时的时间里,解答了近40个围绕汽车的问题。
如果你有买车方面的困惑,也欢迎扫码,添加客服微信xybkf3(群超过100人了,所以只能这样了),加入我们的“线外邦大咖交流②群”(①群满了)
下周四晚八点,第二期如期开聊。除了海哥继续主持坐镇,我们还邀请了一位神秘嘉宾,跟海哥搭档,跟大家就买车、用车问题继续畅聊。
回顾一下第一期大家都聊了些什么?
一个小时聊了40个话题,海哥向邦叔坦言,比电台做节目还累,但累得开心。在此邦叔节取一些实用问答分享给大家。
混动车型哪家强?
海哥观点:混动技术欧美起步较晚丰田起步较早,应该是最成熟的,很早就有一款量产车普锐斯,现在能做到电池和发动机同寿命,而且价格也下探到15万左右。混动是很好的过渡车型,有个好的优势,双擎不用改变用车习惯。如果有驾驶感要求的话,最好还是不要选择。
15万左右的操控王怎么选?
海哥观点:海哥推介昂克赛拉2.0自吸,马自达车型一直偏重于操控,虽然自然吸气没有涡轮增压动力来的快,但对于昂克赛拉的车身重量来说,2.0自然吸气的发动机应付起来绰绰有余。本田思域的提速虽然是数一数二的,但弯道性没有想象中那么好。
比亚迪与特斯拉电池哪个好?
海哥观点:比亚迪铁电池安全性比特斯拉好,但电效又比特斯拉弱一点。让海哥充满自豪感的是比亚迪汽车在国际市场的认可度:美国Facebook公司内,用的电动交通大巴就是比亚迪的产品,高管的座驶是比亚迪的E6纯电动车。
奇骏、CRV、RV4,家用省油舒适,有一定的通过性,选哪个?
海哥观点:奇骏的综合表现是最好的,也是销量最好的;RV4的表现比较中庸;CRV除了四驱是个摆设之外,都还比较均衡。如果有较强的通过性需求,建议奇骏。
下周四晚8点,海哥继续坐镇,携手神秘嘉宾,继续和线外邦粉丝畅聊汽车,敬请期待~
2.快速去污清洁马桶的杀菌神器——ROVO智能消毒马桶刷
走进钢筋水泥的围城里,我们每天的日常生活吃喝拉撒睡都在一个房子里,如果卫生间有异味,每天就会熏的头晕脑胀,山珍海味摆在桌上也难以下咽。如果卫生间细菌消除的不彻底,就会引发疾病。今天给大家来试用一款能杀菌消毒的智能马桶刷——ROVO智能消毒马桶刷,这款智能马桶刷不仅能够杀灭99%以上的细菌,解决细菌滋生的问题,还能时刻的洁净卫生,柔韧十足的硅胶刷头,能紧密贴合马桶凹槽,实现无死角清洁。这样,我们再也不会担心有异味,也不用担心细菌来袭,异味刺鼻,能够吃的香,睡的香。
产品参数:
产品品牌:ROVO
产品名称:智能马桶刷
产品型号:E6
产品材质:PC+ABS
产品尺寸:19.5*1.5cm
额定功率:4W
电池容量:1300mAH
产品重量:380g
产品配件:智能马桶刷底座*1、马桶刷*1、背面强力无痕贴*1、产品说明书*1、保修卡&合格证*1、螺丝刀*1、电池盖*1、螺丝*5
产品细节及测试:
ROVO智能消毒马桶刷采用一体式抽空对拔技术一体成型,这样马桶刷更加坚固,工艺也更规整。手柄造型造型以及直径采集多为女性手掌数据进行多次打样测试,优化 出更符合人体工程学设计的造型,握持感舒适。
ROVO智能消毒马桶刷采用革新数字化芯片技术,实现智能控制。最大的亮点就在于它的基座里内置19颗蓝光灯+J275S35C深紫外灯,双向工作。利用波长在275nm的深紫外灯,又称短波灭菌紫外线来对马桶刷进行消毒杀菌。
ROVO智能消毒马桶刷深紫外灯的优势就在于具备节约能源、即开即用、无毒无害、寿命长、无刺激行气味等优异的特性,家庭使用完全可以放心。
把马桶刷放入基座后,紫外线杀菌灯精准感应自动亮起启动,1次运行的时间约为35秒,即可完成对马桶刷消毒杀菌的清洁过程。
马桶刷基座免打孔壁挂式,背部设计有卡扣,并且还配有不干胶可以黏在卫生间角落,也可以直接坐在卫生间的地面上。由于ROVO智能消毒马桶刷体积小,占用很小的空间。看看我把它放在这里刚刚好。
ROVO智能消毒马桶刷还搭配了基座大广角120°曲线配光,让消毒无死角。在第三方的检测机构中检测得出,在消毒1周期(约30S),即可做到对大肠杆菌高达60.51%的杀灭率。
ROVO智能消毒马桶刷采用了纳米粒子镀层技术与创新流水槽道设计,灵感来源于海浪的冲击,使用起来更顺滑,冲击力更强,快速去除污渍。 而且ROVO智能消毒马桶刷采用了霍尔感应技术,可以减少长期使用过程中由于污渍沉淀带来感应失灵等问题,从而让杀菌更高效,更有保障。
ROVO智能消毒马桶刷刷头采用食品级硅胶打造,无极渐变刷毛,柔软的硅胶刷头让你在清洁的时候无死角,每一处马桶死角都能照顾得到。
普通的马桶刷,刷毛如果太硬,马桶的边边角角根本就不好照顾到,有时候用力太大还会把脏物弄得到处都是,如果不小心甚至溅到手上、身上,怪让人恶心的。这款马桶刷,柔韧性十足不易变形,快速去除污渍,好冲洗、刷头不易沾染排泄物。而且持久使用不变形。
ROVO智能消毒马桶刷刷完后刷头在马桶里用流水冲干净,轻轻一甩不沾水,还能轻松去除毛刷上的头发,告别缠绕打结!
ROVO智能消毒马桶刷基座内腔采用镂空几何设计,配合刷头槽道通体,形成高效的立体通风区域,能均匀有效的分散气流,让挥发更加高效。悬空溢水,环绕通风,刷使用完放回去后也不用担心基座积水。
如果是平时不小心降水渗进去也没事,ROVO智能消毒马桶刷基座的背面底部还设有一个小的出水口,水可以从这里排除。
为了更好的适应更多家庭场景,ROVO智能消毒马桶刷将杀菌消毒所拥能源采用电池模块组合,3节南孚电池,在每天使用一次的情况下,电能消耗约120天。
测评小结:
ROVO智能消毒马桶刷简约又不简单,刷头采用纳米粒子镀层,快速去除污渍;基座镂空几何设计,悬空溢水环绕通风;它采用霍尔技术,精准感应,即放即杀毒;35秒紫外线杀菌,有效杀灭99%以上细菌;19颗蓝光灯精准摆位+J275S35C双向工作;即便是马桶一些比较难以处理的角落,它也能轻松深入进去,彻底清除里面的污垢,这不仅给我们日常生活带来了便利,还提高了我们的生活品质。
[Y�7��
3.机器学习、深度学习面试知识点汇总
作者丨Oldpan
来源丨oldpan博客
编辑丨极市平台
导读
本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识。
前言
最近这段时间正临秋招,这篇文章是老潘在那会找工作过程中整理的一些重要知识点,内容比较杂碎,部分采集于网络,简单整理下发出来,适合面试前突击,当然也适合巩固基础知识。另外推荐大家一本叫做《百面机器学习》的新书,2018年8月份出版的,其中包括了很多机器学习、深度学习面试过程中会遇到的问题,比较适合需要准备面试的机器学习、深度学习方面的算法工程师,当然也同样适合巩固基础~有时间一定要需要看的书籍:
- 程序员的数学系列,适合重温知识,回顾一些基础的线性代数、概率论。
- 深度学习花书,总结类书,有基础知识的讲解,比较全面。
- 统计学习方法,总结类书,篇幅不长,都是核心。
- Pattern Recognition and Machine Learning,条理清晰,用贝叶斯的方式来讲解机器学习。
- 机器学习西瓜书,适合当教材,内容较广但是不深。
百翻不烂的百面机器学习
常见的常识题
- L1正则可以使少数权值较大,多数权值为0,得到稀疏的权值;L2正则会使权值都趋近于0但非零,得到平滑的权值;
- 在AdaBoost算法中,被错分的样本的权重更新比例的公式相同;
- Boosting和Bagging都是组合多个分类器投票的方法,但Boosting是根据单个分类器的正确率决定其权重,Bagging是可简单地设置所有分类器权重相同;
- EM算法不能保证找到全局最优值;
- SVR中核函数宽度小欠拟合,宽度大容易过拟合
- PCA和LDA都是经典的降维算法。PCA是无监督的,也就是训练样本不需要标签;LDA是有监督的,也就是训练样本需要标签。PCA是去除掉原始数据中冗余的维度,而LDA是寻找一个维度,使得原始数据在该维度上投影后不同类别的数据尽可能分离开来。
PCA是一种正交投影,它的思想是使得原始数据在投影子空间的各个维度的方差最大。假设我们要将N维的数据投影到M维的空间上(M<N),根据PCA,我们首先求出这N维数据的协方差矩阵,然后求出其前M个最大的特征值所对应的特征向量,那么这M个特征向量即为所求的投影空间的基。LDA投影后类内方差最小,类间方差最大。如下图所示有两种投影方式,左边的投影后红色数据和蓝色数据还有重叠部分,右边的投影后红色数据和蓝色数据则刚好被分开。LDA的投影即类似右边的投影方式,投影后使得不同类别的数据尽可能分开,而相同类别的数据则尽可能紧凑地分布。
PCA和LDA
- 参考链接:PCA和LDA的对比
KNN K近邻
关于K近邻算法的知识有很多,比如算法执行的步骤、应用领域以及注意事项,不过相信很多人对K近邻算法的使用注意事项不是很清楚。在这篇文章中我们针对这个问题进行解答,带大家来好好了解一下k近邻算法的注意事项以及K近邻算法的优点与缺点。
- K近邻算法的注意事项
K近邻算法的使用注意事项具体就是使用距离作为度量时,要保证所有特征在数值上是一个数量级上,以免距离的计算被数量级大的特征所主导。在数据标准化这件事上,还要注意一点,训练数据集和测试数据集一定要使用同一标准的标准化。其中的原因总的来说就有两点内容,第一就是标准化其实可以视为算法的一部分,既然数据集都减去了一个数,然后除以一个数,这两个数对于所有的数据来说,就要一视同仁。第二就是训练数据集其实很少,在预测新样本的时候,新样本就更少得可怜,如果新样本就一个数据,它的均值就是它自己,标准差是0,这根本就不合理。
- K近邻算法的优点是什么呢?
K近邻算法的优点具体体现在四方面。第一就就是k近邻算法是一种在线技术,新数据可以直接加入数据集而不必进行重新训练,第二就是k近邻算法理论简单,容易实现。第三就是准确性高,对异常值和噪声有较高的容忍度。第四就是k近邻算法天生就支持多分类,区别与感知机、逻辑回归、SVM。
- K近邻算法的缺点是什么呢?
K近邻算法的缺点,基本的 k近邻算法每预测一个“点”的分类都会重新进行一次全局运算,对于样本容量大的数据集计算量比较大。而且K近邻算法容易导致维度灾难,在高维空间中计算距离的时候,就会变得非常远;样本不平衡时,预测偏差比较大,k值大小的选择得依靠经验或者交叉验证得到。k的选择可以使用交叉验证,也可以使用网格搜索。k的值越大,模型的偏差越大,对噪声数据越不敏感,当 k的值很大的时候,可能造成模型欠拟合。k的值越小,模型的方差就会越大,当 k的值很小的时候,就会造成模型的过拟合。
二维高斯核函数
如果让你写一个高斯模糊的函数,你该怎么写呢?
`def gaussian_2d_kernel(kernel_size = 3,sigma = 0):
kernel = np.zeros([kernel_size,kernel_size])
center = kernel_size // 2
if sigma == 0:
sigma = ((kernel_size-1)*0.5 - 1)*0.3 + 0.8
s = 2*(sigma**2)
sum_val = 0
for i in range(0,kernel_size):
for j in range(0,kernel_size):
x = i-center
y = j-center
kernel[i,j] = np.exp(-(x**2+y**2) / s)
sum_val += kernel[i,j]
#/(np.pi * s)
sum_val = 1/sum_val
return kernel*sum_val
`
训练采样方法
- 交叉验证
- 留一法
- 自助法(bootstrap):有放回的抽样方法,可能会抽到重复的样本
Kmean和GMM原理、区别、应用场景
kmeans的收敛性?
- 可以看这里 https://zhuanlan.zhihu.com/p/36331115
- 也可以看百面机器学习P93、P102
如何在多台计算机上做kmeans
其实是这样的,先分布到n台机器上,要保证k个初始化相同,经过一次迭代后,拿到k*n个新的mean,放到一台新的机器上,因为初始化相同,所以mean的排列相同,然后对属于每个类的n个mean做加权平均,再放回每台机器上做下一步迭代。
KNN算法以及流程
K值的选择:
- K值较小,则模型复杂度较高,容易发生过拟合,学习的估计误差会增大,预测结果对近邻的实例点非常敏感。
- K值较大可以减少学习的估计误差,但是学习的近似误差会增大,与输入实例较远的训练实例也会对预测起作用,使预测发生错误,k值增大模型的复杂度会下降。
- 在应用中,k值一般取一个比较小的值,通常采用交叉验证法来来选取最优的K值。
KNN中的K值选取对分类的结果影响至关重要,K值选取的太小,模型太复杂。K值选取的太大,导致分类模糊。那么K值到底怎么选取呢?有人用Cross Validation,有人用贝叶斯,还有的用bootstrap。而距离度量又是另外一个问题,比较常用的是选用欧式距离。可是这个距离真的具有普适性吗?《模式分类》中指出欧式距离对平移是敏感的,这点严重影响了判定的结果。在此必须选用一个对已知的变换(比如平移、旋转、尺度变换等)不敏感的距离度量。书中提出了采用切空间距离(tangent distance)来替代传统的欧氏距离。
无监督学习和有监督学习的区别
有监督:
- 感知机
- K近邻法
- 朴素贝叶斯
- 决策树
- 逻辑回归
- 支持向量机
- 提升方法
- 隐马尔科夫模型
- 条件随机场
无监督:
- 聚类-kmeans
- SVD奇异值分解
- PCA主成分分析
生成式模型:LDA KNN 混合高斯 贝叶斯 马尔科夫 深度信念 判别式模型:SVM NN LR CRF CART
逻辑回归与SVM区别
逻辑回归即LR。LR预测数据的时候,给出的是一个预测结果为正类的概率,这个概率是通过sigmoid函数将wTx映射到[0,1]得到的,对于wTx正的很大时(可以认为离决策边界很远),得到为正类的概率趋近于1;对于wTx负的很大时(可以认为离决策边界很远),得到为正类的概率趋近于0。在LR中,跟“与决策边界距离”扯得上关系的仅此而已。在参数w求解过程中完全没有与决策边界距离的影子,所有样本都一视同仁。和感知机的不同之处在于,LR用到与决策边界的距离,是用来给预测结果一个可以看得到的置信区间。感知机里面没有这一考虑,只根据符号来判断。而SVM更进一步,在参数的求解过程中,便舍弃了距离决策边界过远的点。LR和感知机都很容易过拟合,只有SVM加入了L2范数之后的结构化风险最小化策略才解决了过拟合的问题。总结之:
- 感知机前后都没有引入与超平面“距离”的概念,它只关心是否在超平面的一侧;
- LR引入了距离,但是在训练模型求其参数的时候没有距离的概念,只是在最后预测阶段引入距离以表征分类的置信度;
- SVM两个地方有距离的概念:其一,在求超平面参数的时候有距离的概念,其表现为在与超平面一定距离内的点着重关注,而其他的一切点都不再关注。被关注的点称之为“支撑向量”。其二,预测新样本的时候,和LR一样,距离代表置信度。
逻辑回归只能解决二分类问题,多分类用softmax。相关参考链接
- https://blog.csdn.net/maymay_/article/details/80016175
- https://blog.csdn.net/jfhdd/article/details/52319422
- https://www.cnblogs.com/eilearn/p/9026851.html
bagging boosting 和 提升树
- bagging是通过结合几个模型降低泛化误差,分别训练几个不同的模型,然后让所有的模型表决测试样例的输出。模型平均奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中).共进行k轮抽取,得到k个训练集.(k个训练集相互独立)
- Bagging是并行的学习算法,思想很简单,即每一次从原始数据中根据均匀概率分布有放回的抽取和原始数据集一样大小的数据集合。样本点可以出现重复,然后对每一次产生的数据集构造一个分类器,再对分类器进行组合。对于分类问题,将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果.
- Boosting是一族可将弱学习器提升为强学习器的算法.Boosting的每一次抽样的样本分布是不一样的,每一次迭代,都是根据上一次迭代的结果,增加被错误分类的样本的权重。使模型在之后的迭代中更加注重难以分类的样本。这是一个不断学习的过程,也是一个不断提升的过程,这就是Boosting思想的本质所在。迭代之后,将每次迭代的基分类器进行集成,那么如何进行样本权重的调整和分类器的集成是我们需要考虑的关键问题。
Bagging和Boosting的区别:
- 1)样本选择上:Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的. Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而权值是根据上一轮的分类结果进行调整.
- 2)样例权重:Bagging:使用均匀取样,每个样例的权重相等 Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.
- 3)预测函数:Bagging:所有预测函数的权重相等. Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.
- 4)并行计算:Bagging:各个预测函数可以并行生成 Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果.
Bagging 是 Bootstrap Aggregating 的简称,意思就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的 variance. Bagging 比如 Random Forest 这种先天并行的算法都有这个效果。Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低High variance 是model过于复杂overfit,记住太多细节noise,受outlier影响很大;high bias是underfit,model过于简单,cost function不够好。boosting是把许多弱的分类器组合成一个强的分类器。弱的分类器bias高,而强的分类器bias低,所以说boosting起到了降低bias的作用。variance不是boosting的主要考虑因素。bagging是对许多强(甚至过强)的分类器求平均。在这里,每个单独的分类器的bias都是低的,平均之后bias依然低;而每个单独的分类器都强到可能产生overfitting的程度,也就是variance高,求平均的操作起到的作用就是降低这个variance。Bagging算法的代表:RandomForest随机森林算法的注意点:
- 在构建决策树的过程中是不需要剪枝的。
- 整个森林的树的数量和每棵树的特征需要人为进行设定。
- 构建决策树的时候分裂节点的选择是依据最小基尼系数的。
咱们机器学习升级版的随机森林章节,我用白板写了写这个公式:p = 1 - (1 - 1/N)^N,其意义是:一个样本在一次决策树生成过程中,被选中作为训练样本的概率,当N足够大时,约等于63.2%。简言之,即一个样本被选中的概率是63.2%,根据二项分布的的期望,这意味着大约有63.2%的样本被选中。即有63.2%的样本是不重复的,有36.8%的样本可能没有在本次训练样本集中。随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林的随机性体现在每颗树的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的。有了这2个随机的保证,随机森林就不会产生过拟合的现象了。随机森林是用一种随机的方式建立的一个森林,森林是由很多棵决策树组成的,每棵树所分配的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的。
SVM
相关的notebook除了cs231n也可以看这里。
https://momodel.cn/workspace/5d37bb9b1afd94458f84a521?type=module
凸集、凸函数、凸优化
面试见得比较少,感兴趣的可以看下:
https://blog.csdn.net/feilong_csdn/article/details/83476277
为什么深度学习中的图像分割要先编码后解码
降采样是手段不是目的:
- 降低显存和计算量,图小了显存也小,计算量也小;
- 增大感受野,使用同样3x3的卷积能在更大的图像范围上进行特征提取。大感受野对分割很重要,小感受野做不了多分类分割,而且分割出来很粗糙
- 多出几条不同程度额下采样分支,可以方便进行多尺度特征的融合。多级语义融合会让分类更加准确。
降采样的理论意义,我简单朗读一下,它可以增加对输入图像的一些小扰动的鲁棒性,比如图像平移,旋转等,减少过拟合的风险,降低运算量,和增加感受野的大小。相关链接:为什么深度学习中的图像分割要先编码再解码?
(全局)平均池化average pooling和(全局)最大池化max pooling的区别
- 最大池化保留了纹理特征
- 平均池化保留整体的数据特征
- 全局平均池化有定位的作用(看知乎)
最大池化提取边缘等“最重要”的特征,而平均池化提取的特征更加smoothly。对于图像数据,你可以看到差异。虽然两者都是出于同样的原因使用,但我认为max pooling更适合提取极端功能。平均池有时不能提取好的特征,因为它将全部计入并计算出平均值,这对于对象检测类型任务可能不好用但使用平均池化的一个动机是每个空间位置具有用于期望特征的检测器,并且通过平均每个空间位置,其行为类似于平均输入图像的不同平移的预测(有点像数据增加)。Resnet不是采用传统的完全连通层进行CNN分类,而是直接从最后一个mlp转换层输出特征图的空间平均值,作为通过全局平均合并层的类别置信度,然后将得到的矢量输入到 softmax层。相比之下,Global average更有意义且可解释,因为它强制实现了feature和类别之间的对应关系,这可以通过使用网络的更强大的本地建模来实现。此外,完全连接的层易于过拟合并且严重依赖于 dropout 正则化,而全局平均池化本身就是起到了正则化作用,其本身防止整体结构的过拟合。
- https://zhuanlan.zhihu.com/p/42384808
- https://www.zhihu.com/question/335595503/answer/778307744
- https://www.zhihu.com/question/309713971/answer/578634764
全连接的作用,与1x1卷积层的关系
在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽使用 global average pooling 全局平均池化来代替卷积
- 全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽
那么,1*1卷积的主要作用有以下几点:
- 降维( dimension reductionality )。比如,一张500x500且厚度depth为100的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20。
- 加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力,但是也可以这样说:使之由单纯的线性变换,变为复杂的feature map之间的线性组合,从而实现特征的高度抽象过程。这一过程视为由线性变换为非线性,提高抽象程度。而非加入激活函数的作用。
- 个人应该是降维或者升维来减小参数个数和增加网络深度,以及跨通道的特征聚合
- 可以代替全连接层
看这个问题的回答 https://www.zhihu.com/question/56024942/answer/369745892
看这个问题的回答 https://www.zhihu.com/question/41037974/answer/150522307
concat与add(sum)的区别
对于两路输入来说,如果是通道数相同且后面带卷积的话,add等价于concat之后对应通道共享同一个卷积核。下面具体用式子解释一下。由于每个输出通道的卷积核是独立的,我们可以只看单个通道的输出。假设两路输入的通道分别为X1, X2, ..., Xc和Y1, Y2, ..., Yc。那么concat的单个输出通道为(*表示卷积):
而add的单个输出通道为:
因此add相当于加了一种prior,当两路输入可以具有“对应通道的特征图语义类似”(可能不太严谨)的性质的时候,可以用add来替代concat,这样更节省参数和计算量(concat是add的2倍)。FPN[1]里的金字塔,是希望把分辨率最小但语义最强的特征图增加分辨率,从性质上是可以用add的。如果用concat,因为分辨率小的特征通道数更多,计算量是一笔不少的开销。https://www.zhihu.com/question/306213462/answer/562776112
- concat改成sum确实会好很多,这两个都是特征融合,到底有什么本质区别呢?我用的时候也没什么原则就是两个都试一下(其实更喜欢用sum,毕竟更省显存)。
- 我之前做过类似ASP的实验,金字塔型空洞卷积融合,最后实验结果sum比concat要好一些,但是原因不知道怎么解释
- 我看过一些论文是concat比sum好的,可能这跟数据集等具体情况有关吧
- 不同的特征 sum 了,有什么意义呢,这些特征又损失了吧;如果直接 concat,让后面的网络学习,应该更好啊,用到的特征更多了
SSD怎么改动变成FasterRCNN
SSD是直接分类,而FasterRcnn是先判断是否为背景再进行分类。一个是直接细分类,一个是先粗分类再细分类。
反向传播的原理
反向传播原理看CS231n中的BP过程,以及Jacobian的传播。
GD、SGD、mini batch GD的区别
在百面深度学习中有相应的章节。
偏差、方差
有一篇文章比较好的介绍了,还有在那本电子版CNNbook中也有。
- http://scott.fortmann-roe.com/docs/BiasVariance.html
- 泛化误差可以分解成偏差的平方+方差+噪声
- 偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力
- 方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据 扰动所造成的干扰
- 噪声表达了当前任务上学习任何算法所能达到的期望泛化误差下界,刻画了问题本身的难度。
- 偏差和方差一般称为bias和variance,一般训练误差越强,偏差越小,方差越大,泛化误差在中间会有一个最小值。
- 如果偏差较大,方差较小,此时为欠拟合,而偏差较小,方差较大为过拟合。
为什么会梯度爆炸,如何防止
多层神经网络通常存在像悬崖一样的结构,这是由于几个较大的权重相乘导致的。遇到斜率很大的悬崖结构,梯度更新会很大程序地改变参数值,通常会完全跳过这类悬崖的结构。花书P177.
分布式训练,多卡训练
http://ai.51cto.com/art/201710/555389.htm
https://blog.csdn.net/xs11222211/article/details/82931120#commentBox
精确率和召回率以及PR曲线
这个讲的比较好(TP与FP和ROC曲线):
- https://segmentfault.com/a/1190000014829322
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例。Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值很低。如何权衡这两个值,所以出现了PR曲线、ROC曲线以及F1 score等更多的标准来进行判断。https://www.cnblogs.com/xuexuefirst/p/8858274.html
Yolov2相比Yolov1因为采用了先验框(Anchor Boxes),模型的召回率大幅提升,同时map轻微下降了0.2。
https://segmentfault.com/a/1190000014829322
https://www.cnblogs.com/eilearn/p/9071440.html
https://blog.csdn.net/zdh2010xyz/article/details/54293298
空洞卷积
空洞卷积一般都伴有padding,如果dilation=6,那么padding也等于6。通过空洞卷积后的卷积特征图的大小不变,但是这个卷积的感受野比普通同等大小的卷积大。不过通道数是可以改变的。
- 在DeepLabv3+中,最后的ASPP层,通过一个1x1卷积和3个3x3的空洞卷积,再concat上一个经过全局平均池化后双线性采样到同等维度的特征图。
但是要注意,由于空洞卷积本身不会增大运算量,但是后续的分辨率没有减小,后面的计算量就间接变大了。https://zhuanlan.zhihu.com/p/52476083
数据不好怎么办,数据不均衡怎么处理、只有少量带标签怎么处理
具体问题具体分析。
训练过程中需要过拟合情况怎么办
- 深度学习-通用模型调试技巧
- 如何根据训练/验证损失曲线诊断我们的CNN
- 关于训练神经网路的诸多技巧Tricks(完全总结版)
- 深度学习中数据集很小是一种什么样的体验
如果模型的实际容量比较大,那么可以说模型可以完全学习到整个数据集,会发生过拟合。这时候再添加新的数据进去,模型的性能会进一步提升,说明模型还没有被撑死。期望风险是模型关于联合分布的期望损失,经验风险是模型关于训练数据集的平均损失。根据大树定律,当样本容量N趋于无穷时,经验风险趋于期望风险。但是当样本的容量比较小的的时候,经验风险最小化学习的效果未必就会很好,会产生“过拟合”的现象。结构风险最小化是为了防止过拟合而提出的策略。
https://lilianweng.github.io/lil-log/2019/03/14/are-deep-neural-networks-dramatically-overfitted.html
https://www.jianshu.com/p/97aafe479fa1 (重要)
正则化
在Pytorch中只能在optim中设置weight_decay,目前只支持L2正则,而且这个正则是针对模型中所有的参数,不论是w还是b,也包括BN中的W和b。
BN层和L2正则化一起有什么后果
就是因为 batch norm 过后, weight 影响没那么重了,所以 l2 weight decay 的效果就不明显了。证明了L2正则化与归一化相结合时没有正则化效应。相反,正则化会影响权重的范围,从而影响有效学习率。
https://www.cnblogs.com/makefile/p/batch-norm.html?utm_source=debugrun&utm_medium=referral
ROIPooling和ROIAlign的区别
空间金字塔池化(SSP)可以使不同尺寸的图像产生固定的输出维度。借题也问个问题,为什么fast rcnn的roi pooling是一个max pooling呢?roi pooling后面也是做单个roi的classification,为啥不和classification的pooling不同?我直觉是看feature map中的一个channel,提取全局特征(如,做classification)用average pooling,提取提取全局信息;提取局部特征(如,roi pooling)应该用max pooling,提取局部最明显的特征,成为7×7的grid后交给后面的fc来做classification。相关介绍:
- SPPNet-引入空间金字塔池化改进RCNN
自己实现图像增强算法
https://zhuanlan.zhihu.com/p/71231560
图像分类的tricks
- 亚马逊:用CNN进行图像分类的Tricks(https://mp.weixin.qq.com/s/e4m_LhtqoUiGJMQfEZHcRA)
消融实验(Ablation experiment)
因为作者提出了一种方案,同时改变了多个条件/参数,他在接下去的消融实验中,会一一控制一个条件/参数不变,来看看结果,到底是哪个条件/参数对结果的影响更大。下面这段话摘自知乎,@人民艺术家:你朋友说你今天的样子很帅,你想知道发型、上衣和裤子分别起了多大的作用,于是你换了几个发型,你朋友说还是挺帅的,你又换了件上衣,你朋友说不帅了,看来这件衣服还挺重要的。
手撸NMS与soft-NMS
https://oldpan.me/archives/write-hard-nms-c
逻辑回归和线性回归
线性回归:通过均方误差来寻找最优的参数,然后通过最小二乘法来或者梯度下降法估计:
而逻辑回归的原型:对数几率回归:逻辑回归和对数几率回归是一样的,通过变形就可以得到,另外逻辑回归使用极大似然概率进行估计。简单总结:
- 线性回归和逻辑回归都是广义线性回归模型的特例
- 线性回归只能用于回归问题,逻辑回归用于分类问题(可由二分类推广至多分类)
- 线性回归无联系函数或不起作用,逻辑回归的联系函数是对数几率函数,属于Sigmoid函数
- 线性回归使用最小二乘法作为参数估计方法,逻辑回归使用极大似然法作为参数估计方法
- 两者都可以使用梯度下降法
注意:
- 线性回归的梯度下降法其实和我们训练神经网络一直,首先需要对参数进行初始化,然后使用随机梯度下降的方式对参数进行更新:https://zhuanlan.zhihu.com/p/33992985
- 线性回归与最小二乘法:https://zhuanlan.zhihu.com/p/36910496
- 最大似然 https://zhuanlan.zhihu.com/p/33349381
来源文章:
- https://segmentfault.com/a/1190000014807779
- https://zhuanlan.zhihu.com/p/39363869
- https://blog.csdn.net/hahaha_2017/article/details/81066673
对于凸函数来说,局部最优就是全局最优,相关链接:http://sofasofa.io/forum_main_post.php?postid=1000329
http://sofasofa.io/forum_main_post.php?postid=1000322Logistic classification with cross-entropy
什么是attention,有哪几种
https://zhuanlan.zhihu.com/p/61440116
https://www.zhihu.com/question/65044831/answer/227262160
深度学习的线性和非线性
- 卷积是线性的
- 激活函数是非线性的
梯度消失和梯度爆炸的问题
Batch-norm层的作用
不看必进坑~不论是训练还是部署都会让你踩坑的Batch Normalization
Batch size过小会使Loss曲线振荡的比较大,大小一般按照2的次幂规律选择,至于为什么?没有答出来,面试官后面解释是为了硬件计算效率考虑的,海哥后来也说GPU训练的时候开的线程是2的次幂个神经网络的本质是学习数据的分布,如果训练数据与测试数据的分布不同则会大大降低网络的泛化能力。随着网络训练的进行,每个隐层的变化使得后一层的输入发生变化,从而每一批训练的数据的分布也会变化,致使网络在每次迭代过程中都需要拟合不同的数据分布,增加数据训练的复杂度和过拟合的风险。
对数据的剧烈变化有抵抗能力。
要注意BN在卷积网络层中,因为参数的共享机制,每一个卷积核的参数在不同位置的神经元当中是共享的,因此也应该被归一化。(具体看一下实现过程)https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/batch_norm_layer.html但是在训练过程中如果batch-size不大的话,可以不使用BN(MaskRcnn这样说的)。至此,关于Batch Normalization的理论与实战部分就介绍道这里。总的来说,BN通过将每一层网络的输入进行normalization,保证输入分布的均值与方差固定在一定范围内,减少了网络中的Internal Covariate Shift问题,并在一定程度上缓解了梯度消失,加速了模型收敛;并且BN使得网络对参数、激活函数更加具有鲁棒性,降低了神经网络模型训练和调参的复杂度;最后BN训练过程中由于使用mini-batch的mean/variance作为总体样本统计量估计,引入了随机噪声,在一定程度上对模型起到了正则化的效果。
- https://zhuanlan.zhihu.com/p/34879333
BN与贝叶斯的关系:
- 从Bayesian角度浅析Batch Normalization
BN跨卡训练怎么保证相同的mean和var
在实践中,我发现,跨卡同步的BN对于performance相当有用。尤其是对于detection,segmentation任务,本来Batch size较小。如果Batch Norm能跨卡同步的话,就相当于增大了Batch Norm的batch size 这样能估计更加准确的mean和variance,所以这个操作能提升performance。
如何实现SyncBN
跨卡同步BN的关键是在前向运算的时候拿到全局的均值和方差,在后向运算时候得到相应的全局梯度。最简单的实现方法是先同步求均值,再发回各卡然后同步求方差,但是这样就同步了两次。实际上只需要同步一次就可以,我们使用了一个非常简单的技巧,改变方差的公式(公式是图片,具体大家自己网上搜一下SyncBN)。这样在前向运算的时候,我们只需要在各卡上算出与,再跨卡求出全局的和即可得到正确的均值和方差, 同理我们在后向运算的时候只需同步一次,求出相应的梯度与。我们在最近的论文Context Encoding for Semantic Segmentation 里面也分享了这种同步一次的方法。有了跨卡BN我们就不用担心模型过大用多卡影响收敛效果了,因为不管用多少张卡只要全局的批量大小一样,都会得到相同的效果。
ResNet为什么好用
出现因素:
- 随着网络的加深,优化函数越来越陷入局部最优解
- 随着网络层数的增加,梯度消失的问题更加严重,因为梯度在反向传播的时候会逐渐衰减
原因,误差传播公式可以写成参数W和导数F连乘的形式,当误差由第L层传播到输入以外的第一个隐含层的时候,会涉及到很多很多的参数和导数的连乘,这时误差很容易产生消失或者膨胀,导致不容易学习,拟合能力和泛化能力较差。残差层中的F层只需要拟合输入x与目标输出H的残差H-x即可,如果某一层的输出已经较好地拟合了期望结果,那么多一层也不回使得模型变得更差,因为该层的输出直接被短接到两层之后,相当于直接学习了一个恒等映射,而跳过的两层只需要拟合上层输出和目标之间的残差即可。
- https://zhuanlan.zhihu.com/p/42706477
- https://zhuanlan.zhihu.com/p/31852747
Resnet的缺点
resnet其实无法真正的实现梯度消失,这里面有很强的先验假设,并且resnet真正起作用的层只在中间,深层作用比较小(到了深层就是恒等映射了),feature存在利用不足的现象,add的方式阻碍了梯度和信息的流通。
L1范数和L2范数 应用场景
L1正则可以使少数权值较大,多数权值为0,得到稀疏的权值;L2正则会使权值都趋近于0但非零,得到平滑的权值;https://zhuanlan.zhihu.com/p/35356992
网络初始化有哪些方式,他们的公式初始化过程
目前的权重初始化分为三类:
- 全置为0 - 几乎不会使用
- 随机初始化(均匀随机、正态分布)
- Xavier 作者 Glorot 认为,优秀的初始化应该使得各层的激活值和状态梯度的方差在传播过程中保持一致。适合sigmoid,但是不适合Relu。
- He初始化适用于Relu。
初始化,说白了就是构建一个平滑的局部几何空间从而使得优化更简单xavier分布解析:
- https://prateekvjoshi.com/2016/03/29/understanding-xavier-initialization-in-deep-neural-networks/
假设使用的是sigmoid函数。当权重值(值指的是绝对值)过小,输入值每经过网络层,方差都会减少,每一层的加权和很小,在sigmoid函数0附件的区域相当于线性函数,失去了DNN的非线性性。当权重的值过大,输入值经过每一层后方差会迅速上升,每层的输出值将会很大,此时每层的梯度将会趋近于0. xavier初始化可以使得输入值x 方差经过网络层后的输出值y方差不变。
- https://blog.csdn.net/winycg/article/details/86649832
- https://zhuanlan.zhihu.com/p/57454669
在pytorch中默认的权重初始化方式是何凯明的那个,举个例子:
resnet中权重的初始化
for m in self.modules():
if isinstance(m, nn.Conv2d):
nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
elif isinstance(m, nn.BatchNorm2d):
nn.init.constant_(m.weight, 1)
nn.init.constant_(m.bias, 0)
# Zero-initialize the last BN in each residual branch,
# so that the residual branch starts with zeros, and each residual block behaves like an identity.
# This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677
if zero_init_residual:
for m in self.modules():
if isinstance(m, Bottleneck):
nn.init.constant_(m.bn3.weight, 0)
elif isinstance(m, BasicBlock):
nn.init.constant_(m.bn2.weight, 0)
求解模型参数量
def model_info(model): # Plots a line-by-line description of a PyTorch model
n_p = sum(x.numel() for x in model.parameters()) # number parameters
n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients
print('\n%5s %50s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma'))
for i, (name, p) in enumerate(model.named_parameters()):
name = name.replace('module_list.', '')
print('%5g %50s %9s %12g %20s %12.3g %12.3g' % (
i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std()))
print('Model Summary: %d layers, %d parameters, %d gradients' % (i + 1, n_p, n_g))
print('Model Size: %f MB parameters, %f MB gradients\n' % (n_p*4/1e6, n_g*4/1e6))
卷积计算量
差不多这几个懂了就OK。
- 普通卷积
- 可分离卷积
- 全连接
- 点卷积
可以看老潘的这篇文章:
- 你的模型能跑多快???
多标签和多分类
那么,如何用softmax和sigmoid来做多类分类和多标签分类呢?
1、如何用softmax做多分类和多标签分类 现假设,神经网络模型最后的输出是这样一个向量logits=[1,2,3,4], 就是神经网络最终的全连接的输出。这里假设总共有4个分类。用softmax做多分类的方法: tf.argmax(tf.softmax(logits))首先用softmax将logits转换成一个概率分布,然后取概率值最大的作为样本的分类,这样看似乎,tf.argmax(logits)同样可以取得最大的值,也能得到正确的样本分类,这样的话softmax似乎作用不大.那么softmax的主要作用其实是在计算交叉熵上,首先样本集中y是一个one-hot向量,如果直接将模型输出logits和y来计算交叉熵,因为logits=[1,2,3,4],计算出来的交叉熵肯定很大,这种计算方式不对,而应该将logits转换成一个概率分布后再来计算,就是用tf.softmax(logits)和y来计算交叉熵,当然我们也可以直接用tensorflow提供的方法sofmax_cross_entropy_with_logits来计算 这个方法传入的参数可以直接是logits,因为这个根据方法的名字可以看到,方法内部会将参数用softmax进行处理,现在我们取的概率分布中最大的作为最终的分类结果,这是多分类。我们也可以取概率的top几个,作为最终的多个标签,或者设置一个阈值,并取大于概率阈值的。这就用softmax实现了多标签分类。
2、如何用sigmoid做多标签分类 sigmoid一般不用来做多类分类,而是用来做二分类的,它是将一个标量数字转换到[0,1]之间,如果大于一个概率阈值(一般是0.5),则认为属于某个类别,否则不属于某个类别。那么如何用sigmoid来做多标签分类呢?其实就是针对logits中每个分类计算的结果分别作用一个sigmoid分类器,分别判定样本是否属于某个类别。同样假设,神经网络模型最后的输出是这样一个向量logits=[1,2,3,4], 就是神经网络最终的全连接的输出。这里假设总共有4个分类。tf.sigmoid(logits)sigmoid应该会将logits中每个数字都变成[0,1]之间的概率值,假设结果为[0.01, 0.05, 0.4, 0.6],然后设置一个概率阈值,比如0.3,如果概率值大于0.3,则判定类别符合,那这里,样本会被判定为类别3和类别4都符合。
数据的输入为什么要归一化
为了消除数据特征之间的量纲影响在实际应用中,通过梯度下降法求解的模型通常是需要数据归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等,但是决策模型不是很适用。
为什么说朴素贝叶斯是高偏差低方差?
首先,假设你知道训练集和测试集的关系。简单来讲是我们要在训练集上学习一个模型,然后拿到测试集去用,效果好不好要根据测试集的错误率来衡量。但很多时候,我们只能假设测试集和训练集的是符合同一个数据分布的,但却拿不到真正的测试数据。这时候怎么在只看到训练错误率的情况下,去衡量测试错误率呢?
由于训练样本很少(至少不足够多),所以通过训练集得到的模型,总不是真正正确的。(就算在训练集上正确率100%,也不能说明它刻画了真实的数据分布,要知道刻画真实的数据分布才是我们的目的,而不是只刻画训练集的有限的数据点)。而且,实际中,训练样本往往还有一定的噪音误差,所以如果太追求在训练集上的完美而采用一个很复杂的模型,会使得模型把训练集里面的误差都当成了真实的数据分布特征,从而得到错误的数据分布估计。这样的话,到了真正的测试集上就错的一塌糊涂了(这种现象叫过拟合)。但是也不能用太简单的模型,否则在数据分布比较复杂的时候,模型就不足以刻画数据分布了(体现为连在训练集上的错误率都很高,这种现象较欠拟合)。过拟合表明采用的模型比真实的数据分布更复杂,而欠拟合表示采用的模型比真实的数据分布要简单。
在统计学习框架下,大家刻画模型复杂度的时候,有这么个观点,认为Error = Bias + Variance。这里的Error大概可以理解为模型的预测错误率,是有两部分组成的,一部分是由于模型太简单而带来的估计不准确的部分(Bias),另一部分是由于模型太复杂而带来的更大的变化空间和不确定性(Variance)。
所以,这样就容易分析朴素贝叶斯了。它简单的假设了各个数据之间是无关的,是一个被严重简化了的模型。所以,对于这样一个简单模型,大部分场合都会Bias部分大于Variance部分,也就是说高偏差而低方差。
在实际中,为了让Error尽量小,我们在选择模型的时候需要平衡Bias和Variance所占的比例,也就是平衡over-fitting和under-fitting。
Canny边缘检测,边界检测算法有哪些
https://zhuanlan.zhihu.com/p/42122107
https://zhuanlan.zhihu.com/p/59640437
传统的目标检测
传统的目标检测一般分为以下几个步骤:
- 区域选择:一幅图像通过selective search的方法,首先对原图进行分割(聚类),然后通过计算相邻区域的相似度,最终找到2000个框,同样要与GT进行正例和负例的判断。
- 特征提取:通过SIFT或者其他的特征提取方法,将2000个转化为特征向量
- 分类器分类:将特征向量放入SVM中进行分类训练,同时将父类也放入分类器中进行训练。
经典的结构:
- HoG + SVM
传统方法的缺点:
- 基于滑窗的区域选择策略没有针对性,时间复杂度高,窗口冗余
- 手工设计的特征对环境多样性的变化并没有很好的鲁棒性
腐蚀膨胀、开运算闭运算
可以看学习OpenCV第三版中的相关内容,搜索erode、dilation
一些滤波器
- https://blog.csdn.net/qq_22904277/article/details/53316415
- https://www.jianshu.com/p/fbe8c24af108
- https://blog.csdn.net/qq_22904277/article/details/53316415
- https://blog.csdn.net/nima1994/article/details/79776802
- https://blog.csdn.net/jiang_ming_/article/details/82594261
- 图像中的高频、低频信息以及高通滤波器、低通滤波器
- 在图像中,边缘信息等比较明显的变化比较剧烈的像素点就是图像中的高频信息。而除了边缘部分,比较平缓的像素点变化不是很剧烈的内容信息就是低频信息。
- 高通滤波器就是突出变化剧烈(边缘),去除低频部分,也就是当做边缘提取器。而低通滤波器主要是平滑该像素的亮度。主要用于去噪和模糊化,高斯模糊是最常用的模糊滤波器(平滑滤波器)之一,它是一个削弱高频信号强度的低通滤波器。
Resize双线性插值
在网络结构进行特征融合的时候,双线性插值的方式比转置卷积要好一点。因为转置卷积有一个比较大的问题就是如果参数配置不当,很容易出现输出feature map中带有明显棋盘状的现象。
- 需要注意的,最近邻插值的效果是最不好的。
双线性插值也分为两类:
- align_corners=True
- align_corners=False
一般来说,使用align_corners=True可以保证边缘对齐,而使用align_corners=False则会导致边缘突出的情况。这个讲的非常好:
- https://blog.csdn.net/qq_37577735/article/details/80041586
代码实现的讲解:
- https://blog.csdn.net/love_image_xie/article/details/87969405
- https://www.zhihu.com/question/328891283/answer/717113611 看这里的图像展示:https://discuss.pytorch.org/t/what-we-should-use-align-corners-false/22663
gradient clipping 梯度裁剪
为了避免梯度爆炸而做出的改进,注意要和提前终止区别开来。(提前终止是一种正则化方法,因为当训练有足够能力表示甚至会过拟合的大模型时,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。这意味着只要我们返回使验证集误差最低的参数设置即可)第一种做法很容易理解,就是先设定一个 gradient 的范围如 (-1, 1), 小于 -1 的 gradient 设为 -1, 大于这个 1 的 gradient 设为 1.
- https://wulc.me/2018/05/01/%E6%A2%AF%E5%BA%A6%E8%A3%81%E5%89%AA%E5%8F%8A%E5%85%B6%E4%BD%9C%E7%94%A8/
实现一个简单的卷积
实现卷积一般用的是im2col的形式,但是面试中我们简单实现一个滑窗法就行了。比如:用3x3的卷积核(滤波盒)实现卷积操作。NCNN中在PC端卷积的源码也是这样的。
`/*
输入:imput[IC][IH][IW]
IC = input.channels
IH = input.height
IW = input.width
卷积核: kernel[KC1][KC2][KH][KW]
KC1 = OC
KC2 = IC
KH = kernel.height
KW = kernel.width
输出:output[OC][OH][OW]
OC = output.channels
OH = output.height
OW = output.width
其中,padding = VALID,stride=1,
OH = IH - KH + 1
OW = IW - KW + 1
也就是先提前把Oh和Ow算出来,然后将卷积核和输入数据一一对应即可
*/
for(int ch=0;ch<output.channels;ch++)
{
for(int oh=0;oh<output.height;oh++)
{
for(int ow=0;ow<output.width;ow++)
{
float sum=0;
for(int kc=0;kc<kernel.channels;kc++)
{
for(int kh=0;kh<kernel.height;kh++)
{
for(int kw=0;kw<kernel.width;kw++)
{
sum += input[kc][oh+kh][ow+kw]*kernel[ch][kc][kh][kw];
}
}
}
//if(bias) sum +=bias[]
output[ch][oh][ow]=sum;
}
}
}
`
参考:
- https://www.cnblogs.com/hejunlin1992/p/8686838.html
卷积的过程
看看Pytorch的源码与caffe的源码,都是将卷积计算转化为矩阵运算,im2col,然后gemm。https://blog.csdn.net/mrhiuser/article/details/52672824
转置卷积的计算过程
https://cloud.tencent.com/developer/article/1363619
1*1的卷积核有什么用,3*3的卷积核和一个1*3加一个3*1的有什么区别
1x1卷积可以改变上一层网络的通道数目。卷积核大于1x1,意味着提特征需要邻域信息。
- 若提取横向纹理,则横向邻域信息密度比纵向信息密度高。
- 核扁横着最科学。若提纵向纹理,同理,瘦高竖着最好。
- 若你想提取的纹理种类丰富,那横向邻域信息密度的期望~=纵向信息密度期望
所以对懒人来说,最优核的尺寸的期望是正方形。至于1*n和n*1,它们一般是搭配使用的,从而实现n*n卷积核的感受野,可以在减少参数的同时增加层数,在CNN的较高层中使用可以带来一定的优势。卷积核并非都是正方形的,还可以是矩形,比如3*5,在文本检测和车牌检测当中就有应用,这种设计主要针对文本行或者车牌的形状,能更好的学习特征。其实我觉得方形矩形影响不大,网络的学习能力是非常强的。当然我们也可以学习卷积的形状,类似于deformable convolution,老潘后续会讲下。
ResNet中bottlenet与mobilenetv2的inverted结构对比
注意,resnet中是先降维再升维,而mobilenetv2中是先升维后降维(所以称之为inversed)。
- https://zhuanlan.zhihu.com/p/67872001
- https://zhuanlan.zhihu.com/p/32913695
卷积特征图大小的计算
很简单但是也很容易错的问题:
- Conv2D
动态图和静态图的区别
- 静态图是建立一次,然后不断复用;静态图可以在磁盘中序列化,可以保存整个网络的结构,可以重载,在部署中很实用,在tensorflow静态图中条件和循环需要特定的语法,pytorch只用python的语法就可以实现
- 而动态图是每次使用的时候建立,不容易优化,需要重复之前的代码,但是动态图比静态图代码更简洁
依据采用动态计算或是静态计算的不同,可以将这些众多的深度学习框架划分成两大阵营,当然也有些框架同时具有动态计算和静态计算两种机制(比如 MxNet 和最新的 TensorFlow)。动态计算意味着程序将按照我们编写命令的顺序进行执行。这种机制将使得调试更加容易,并且也使得我们将大脑中的想法转化为实际代码变得更加容易。而静态计算则意味着程序在编译执行时将先生成神经网络的结构,然后再执行相应操作。从理论上讲,静态计算这样的机制允许编译器进行更大程度的优化,但是这也意味着你所期望的程序与编译器实际执行之间存在着更多的代沟。这也意味着,代码中的错误将更加难以发现(比如,如果计算图的结构出现问题,你可能只有在代码执行到相应操作的时候才能发现它)。尽管理论上而言,静态计算图比动态计算图具有更好的性能,但是在实践中我们经常发现并不是这样的。
历年来所有的网络
这个可以看CS231n中的第九课以及
- https://ucbrise.github.io/cs294-ai-sys-sp19/assets/lectures/lec02/classic_neural_architectures.pdf
- https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202
正式总结下:
- LeNet-5:第一个卷积,用来识别手写数组,使用的卷积大小为5x5,s=1,就是普通的卷积核池化层结合起来,最后加上全连接层。
- AlexNet:在第一个卷积中使用了11x11卷积,第一次使用Relu,使用了NormLayer但不是我们经常说的BN。使用了dropout,在两个GPU上进行了训练,使用的训练方式是模型并行、
- ZFNet:AlexNet的加强版,将11x11卷积改成了7x7,也在AlexNet的基础上将卷积的通道深度加深。所以在分类比赛中比之前的效果好了些。
- VGGNet:只使用了小卷积3x3(s=1)以及常规的池化层,不过深度比上一个深了一些,最后几层也都是全连接层接一个softmax。为什么使用3x3卷积,是因为三个3x3卷积的有效感受野和7x7的感受野一致,而且更深、更加非线性,而且卷积层的参数也更加地少,所以速度更快也可以适当加深层数。
- GoogleNet:没有使用FC层,参数量相比之前的大大减少,提出了Inception module结构,也就是NIN结构(network within a network)。但是原始的Inception module计算量非常大,所以在每一个分支加了1x1 conv "bottleneck"结构(具体细节看图)。googlenet网络结构中为了避免梯度消失,在中间的两个位置加了两个softmax损失,所以会有三个loss,整个网络的loss是通过三个loss乘上权重相加后得到 相关文章:https://zhuanlan.zhihu.com/p/42704781 inception结构的特点:1、增加了网络的宽度,同时也提高了对于不同尺度的适应程度。2、使用 1x1 卷积核对输入的特征图进行降维处理,这样就会极大地减少参数量,从而减少计算量。3、在V3中使用了多个小卷积核代替大卷积核的方法,除了规整的的正方形,我们还有分解版本的 3x3 = 3x1 + 1x3,这个效果在深度较深的情况下比规整的卷积核更好。4、发明了Bottleneck 的核心思想还是利用多个小卷积核替代一个大卷积核,利用 1x1 卷积核替代大的卷积核的一部分工作。也就是先1x1降低通道然后普通3x3然后再1x1回去。
- Xception:改进了inception,提出的 depthwise Separable Conv 让人眼前一亮。https://www.jianshu.com/p/4708a09c4352
- ResNet:越深的网络越难进行优化,有一个特点需要搞明白,越深的层最起码表现应该和浅层的一样,不能比浅层的还差。对于更深的Resnet(50+),这里采用bottleneck层(也就是两个1x1分别降维和升维)去提升网络的效率。更详细的描述可以看百面机器学习和ppt。相关讲解:https://zhuanlan.zhihu.com/p/42706477
- DenseNet 不能简单说densenet更好,二者比较,ResNet是更一般的模型,DenseNet是更特化的模型。DenseNet用于图像处理可能比ResNet表现更好,本质是DenseNet更能和图像的信息分布特点匹配,是使用了多尺度的Kernel。但是也有缺点最直接的计算就是一次推断中所产生的所有feature map数目。有些框架会有优化,自动把比较靠前的层的feature map释放掉,所以显存就会减少,或者inplace操作通过重新计算的方法减少一部分显存,但是densenet因为需要重复利用比较靠前的feature map,所以无法释放,导致显存占用过大。正是这种_concat_造成densenet能更密集的连接。
- SeNet:全称为Squeeze-and-Excitation Networks。属于注意力特征提取的范畴,加了GP(Global pooling)和两个FC再加上sigmoid和scale。也就是生成注意力掩膜,去乘以输入的x得到新的x。核心思想就是去学习每个特征通道的重要程度,然后根据这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。这个给每一个特征层通道去乘以通过sigmoid得到的重要系数,其实和用bn层去观察哪个系数重要一样。缺点:由于在主干上存在 0~1 的 scale 操作,在网络较深 BP 优化时就会在靠近输入层容易出现梯度消散的情况,导致模型难以优化。http://www.sohu.com/a/161633191_465975
- Wide Residual Networks
- ResNeXt:是resnet和inception的结合体,旁边的residual connection就是公式中的x直接连过来,然后剩下的是32组独立的同样结构的变换,最后再进行融合,符合split-transform-merge的模式。虽然分了32组,都是先点卷积降维,然后3x3普通卷积,然后1x1卷积升维(与Mobilenetv2中的相反) 相关介绍:https://zhuanlan.zhihu.com/p/51075096
- Densely Connected Convolutional Networks:有利于减轻梯度消失的情况,增强了特征的流动。
shufflenet:https://blog.csdn.net/u011974639/article/details/79200559
一些统计知识
正太分布:https://blog.csdn.net/yaningli/article/details/78051361
关于如何训练(训练过程中的一些问题)
MaxPool导致的训练震荡(通过在MaxPool之后加上L2Norm):https://mp.weixin.qq.com/s/QR-KzLxOBazSbEFYoP334Q
全连接层的好伴侣:空间金字塔池化(SPP)
https://zhuanlan.zhihu.com/p/64510297
感受野计算
感受野计算有两个公式,一个普通公式一个通项公式:
需要注意,卷积和池化都可以增加感受野。
http://zike.io/posts/calculate-receptive-field-for-vgg-16/
—版权声明—
仅用于学术分享,版权属于原作者。
—THE END—
4.黑龙江省市场监督管理局2021年第27期食品抽检:餐饮食品222批次 217批次合格
中国质量新闻网讯 近日,黑龙江省市场监督管理局发布2021年第27期食品抽检情况通告。通告显示,该期抽检餐饮食品222批次,217批次合格,5批次不合格。合格产品信息如下:
序号标称生产企业名称标称生产企业地址被抽样单位名称被抽样单位所在省份样品名称规格型号加工/生产日期1//大庆高新区聚穗筋头巴脑一锅香店黑龙江麻辣火锅底料/2020/12/222//大庆高新区聚穗筋头巴脑一锅香店黑龙江火锅蘸料辣椒油/2020/12/263长春市榆南村酒业有限公司吉林省长春市榆树市五棵树镇安乐村(五前路西)大庆高新区聚穗筋头巴脑一锅香店黑龙江散装白酒/2020/11/274//大庆高新区锦晟手切羊肉火锅店黑龙江麻辣火锅底料/2020/12/175//大庆高新区锦晟手切羊肉火锅店黑龙江火锅蘸料牛肉酱/2020/12/176//大庆高新区锦晟手切羊肉火锅店黑龙江火锅蘸料辣椒油/2020/12/237油田老窖大庆市高新区大庆高新区锦晟手切羊肉火锅店黑龙江散装白酒/2020/11/278//大庆高新区金吉源兔味馆黑龙江大头菜包子/2020/12/279//大庆高新区金吉源兔味馆黑龙江猪肉包子/2020/12/2710大庆市红岗区士博食品大庆市红岗区红岗新城大庆高新区金吉源兔味馆黑龙江散装白酒/2020/12/311//大庆高新区鑫科川竹火锅店黑龙江麻辣火锅底料/2020/12/2712//大庆高新区鑫科川竹火锅店黑龙江番茄火锅底料/2020/12/2713//大庆高新区鑫科川竹火锅店黑龙江火锅蘸料麻酱/2020/12/2714//大庆高新区鑫科川竹火锅店黑龙江火锅蘸料辣椒油/2020/12/2715黑龙江红星隆农垦田源酒厂黑龙江省垦区红兴隆管局大庆高新区鑫科川竹火锅店黑龙江散装白酒/2020/12/2016//大庆高新区老牌坊鱼豆花火锅店黑龙江麻辣火锅底料/2020/12/2717//铁力市正阳王晓早餐店黑龙江素什锦馅包子/2020/12/2818//铁力市正阳王晓早餐店黑龙江大头菜青椒馅包子/2020/12/2819黑龙江省鑫升河配制酒生产有限公司铁力市铁力镇新铁街十四委(林业局原贮木场院内)铁力市正阳鑫口福早餐店黑龙江玉米白酒42%vol/2020/10/1120//铁力市正阳博闻饸饹面馆黑龙江酱牛肉/2020/12/2721//铁力市正阳博闻饸饹面馆黑龙江酱牛蹄筋/2020/12/2722黑龙江鑫德惠酒业有限公司哈尔滨市道外区团结镇铁力市正阳博闻饸饹面馆黑龙江高粱白酒50%vol/2020/11/2523//大庆高新区春菊不大豆腐脑店黑龙江油条/2020/12/2824//铁力市正阳健晟星期天火锅店黑龙江老式麻酱(火锅蘸料)/2020/12/2725//加格达奇区草原人家碳火锅朝阳路店黑龙江火锅底料/2020/11/2826//铁力市正阳健晟星期天火锅店黑龙江新口味麻酱(火锅蘸料)/2020/12/2727//铁力市正阳健晟星期天火锅店黑龙江小油条/2020/12/2828//铁力市正阳德力餐厅黑龙江油条/2020/12/2829//铁力市西城刘记地摊打边炉烧烤店黑龙江火锅底料/2020/12/2530//鹤岗市东山区汁道火锅店黑龙江火锅底料/2020/12/2731//鹤岗市东山区汁道火锅店黑龙江火锅蘸料/2020/12/2732哈尔滨天顺源清真餐饮有限公司黑龙江省哈尔滨市道里区爱建新城三江美食城D栋哈尔滨天顺源清真餐饮有限公司黑龙江芝麻酱蘸料计量称重2020/12/2833哈尔滨天顺源清真餐饮有限公司黑龙江省哈尔滨市道里区爱建新城三江美食城D栋哈尔滨天顺源清真餐饮有限公司黑龙江蒜泥香油蘸料计量称重2020/12/2834//大庆市萨尔图区李鑫尚汤古坊饭店黑龙江酱卤肉/2020/12/2835//鸡东县老台门汤包店黑龙江牛肉馅包子/2020/12/2936//鸡东县老台门汤包店黑龙江芹菜馅包子/2020/12/2937//鸡东县老台门汤包店黑龙江韭菜鸡蛋馅包子/2020/12/2938哈尔滨玉泉骄子酒业有限公司哈尔滨市阿城区舍利工业园区鸡东县咱家香粥铺黑龙江高粱原浆酒/2020/5/1139黑龙江省三江家园酒业有限公司黑龙江省鸡西市滴道区201国道鸡牡段247.5公里处鸡东县咱家香粥铺黑龙江五粮白酒/2020/3/2640//鹤岗市南山区梁记营养粥铺黑龙江花卷/2020/12/2941//鹤岗市南山区梁记营养粥铺黑龙江油条/2020/12/2942//鹤岗市南山区梁记营养粥铺黑龙江包子/2020/12/2943鹤岗市龙源酒业鹤岗市工农区龙源路鸡东县王记粥铺黑龙江玉米白酒50%vol/2017/2/1844//伊春市乌马河区老北京碳火锅店黑龙江火锅底料/2020/12/2945//鸡东县蒂九时代泥锅麻辣串火锅店黑龙江火锅蘸料芝麻酱/2020/12/2946//鸡东县王记粥铺黑龙江油条/2020/12/2947//鹤岗市南山区健晟星期天火锅店黑龙江火锅底料/2020/12/2848//鹤岗市南山区健晟星期天火锅店黑龙江火锅蘸料/2020/12/2949//鹤岗市南山区醉江湖饭店黑龙江熏鸡(酱卤肉制品)/2020/12/2950//鹤岗市南山区醉江湖饭店黑龙江酱脊骨肉/2020/12/2951//鸡东县名都晓荷塘火锅店黑龙江火锅蘸料芝麻酱/2020/12/2952//鸡东县名都晓荷塘火锅店黑龙江黄金大饼/2020/12/2953//漠河市辣庄重庆老火锅店黑龙江麻辣火锅底料/2020/12/2954//城子河区川麻香涮肚馆黑龙江火锅底料/2020/10/2955//城子河区川麻香涮肚馆黑龙江火锅蘸料/2020/12/2956//鸡东县芙蓉镇重庆老灶火锅店黑龙江红油火锅底料/2020/12/2257//城子河区齐瑶手擀面刀削面店黑龙江卤猪耳朵/2020/12/2858//鸡东县芙蓉镇重庆老灶火锅店黑龙江牛油火锅底料/2020/12/1759//城子河区齐瑶手擀面刀削面店黑龙江卤口条/2020/12/2860//工农区荣记生煎包粥铺黑龙江油条/2020/12/3061鹤岗市白酒厂黑龙江省鹤岗市工农区东解放路南三道街九号鹤岗市工农区裕丰元包子铺黑龙江散装白酒/2020/12/662黑龙江省鹤溪泉酒厂汤原县鹤立镇工业园区南侧鹤岗市南山区品粥堂九州包子铺黑龙江散装白酒/2020/11/1563//鸡西市鸡冠区立功息家筋饼豆腐脑店黑龙江油条/2020/12/3064//肇州县明鑫月早餐店黑龙江酸菜小笼包/2020/12/3065//肇州县王辉早餐店黑龙江油条/2020/12/3066衡水卧龙泉酒业有限公司衡水市阜城县城北工业园区顺达东路369号肇州县陈三家马肉馆黑龙江老白干/2020/9/2467//肇州县陈三家马肉馆黑龙江酱猪耳朵/2020/12/2968//肇州县陈三家马肉馆黑龙江酱护心肉/2020/12/2969//肇州县福满楼粗粮馆黑龙江酱肘子/2020/12/2870//肇州县福满楼粗粮馆黑龙江酱口条/2020/12/2871//肇源县肇源镇粥道人家粥铺黑龙江素馅包子/2020/12/3172//鸡西市鸡冠区老村长汤子馆黑龙江酱猪肝/2020/12/3073建华区珍食惠驴肉馆黑龙江省齐齐哈尔市建华区天增小区21号楼00单元01层01号建华区珍食惠驴肉馆黑龙江驴腱子(酱卤肉制品)/2020/12/3174建华区珍食惠驴肉馆黑龙江省齐齐哈尔市建华区天增小区21号楼00单元01层01号建华区珍食惠驴肉馆黑龙江驴护心肉(酱卤肉制品)/2020/12/3175哈尔滨市道外区冰城好粥道哈尔滨市道外区太古新天地106栋1层19号哈尔滨市道外区冰城好粥道黑龙江小花卷计量销售2021/1/476哈尔滨市道外区冰城好粥道哈尔滨市道外区太古新天地106栋1层19号哈尔滨市道外区冰城好粥道黑龙江奶香小馒头计量销售2021/1/477哈尔滨市道外区小双宝铁饭盒黑龙江省哈尔滨市道外区南十四道街87号1至2层哈尔滨市道外区小双宝铁饭盒黑龙江小花卷计量销售2021/1/478哈尔滨市道外区小双宝铁饭盒黑龙江省哈尔滨市道外区南十四道街87号1至2层哈尔滨市道外区小双宝铁饭盒黑龙江熏鸡腿计量销售2021/1/479哈尔滨市道外区麦田熏酱小酒馆哈尔滨市道外区道外区南勋街80号1-2层哈尔滨市道外区麦田熏酱小酒馆黑龙江猪手计量销售2021/1/480哈尔滨市道外区麦田熏酱小酒馆哈尔滨市道外区道外区南勋街80号1-2层哈尔滨市道外区麦田熏酱小酒馆黑龙江酱脊骨计量销售2021/1/481哈尔滨市道外区麦田熏酱小酒馆哈尔滨市道外区道外区南勋街80号1-2层哈尔滨市道外区麦田熏酱小酒馆黑龙江干肠计量销售2021/1/482哈尔滨市道外区佰益聚福祥麻花店哈尔滨市道外区黎华小区C5栋哈尔滨市道外区佰益聚福祥麻花店黑龙江原味麻花计量销售2021/1/483哈尔滨市道外区佰益聚福祥麻花店哈尔滨市道外区黎华小区C5栋哈尔滨市道外区佰益聚福祥麻花店黑龙江小麻花计量销售2021/1/484哈尔滨市道外区佰益聚福祥麻花店哈尔滨市道外区黎华小区C5栋哈尔滨市道外区佰益聚福祥麻花店黑龙江麻叶计量销售2021/1/485龙沙区马兰花拉面公园路店黑龙江省齐齐哈尔市龙沙区公园路35号00单元01层02号龙沙区马兰花拉面公园路店黑龙江卤香牛肉/2021/1/486龙沙区马兰花拉面公园路店黑龙江省齐齐哈尔市龙沙区公园路35号00单元01层02号龙沙区马兰花拉面公园路店黑龙江马兰花肘花/2021/1/487龙沙区马兰花拉面公园路店黑龙江省齐齐哈尔市龙沙区公园路35号00单元01层02号龙沙区马兰花拉面公园路店黑龙江手撕鹅腿/2021/1/488建华区兴隆砂锅居黑龙江省齐齐哈尔市建华区玉坤小区3号楼1层网点西往东数2门建华区兴隆砂锅居黑龙江酱牛肉/2021/1/389建华区兴隆砂锅居黑龙江省齐齐哈尔市建华区玉坤小区3号楼1层网点西往东数2门建华区兴隆砂锅居黑龙江酱驴肉/2021/1/490建华区兴隆砂锅居黑龙江省齐齐哈尔市建华区玉坤小区3号楼1层网点西往东数2门建华区兴隆砂锅居黑龙江酱驴排/2021/1/491建华区红汤卤味馆黑龙江省齐齐哈尔市建华区天增小区1号楼00单元01层07号建华区红汤卤味馆黑龙江酱马肉/2021/1/492建华区红汤卤味馆黑龙江省齐齐哈尔市建华区天增小区1号楼00单元01层07号建华区红汤卤味馆黑龙江酱马腱子肉/2021/1/493哈尔滨市南岗区洽尔斯海鲜烤肉火锅自助餐厅黑龙江省哈尔滨市南岗区中兴大道哈西商厦地下哈尔滨市南岗区洽尔斯海鲜烤肉火锅自助餐厅黑龙江麻酱(火锅蘸料)/2021/1/794哈尔滨市南岗区洽尔斯海鲜烤肉火锅自助餐厅黑龙江省哈尔滨市南岗区中兴大道哈西商厦地下哈尔滨市南岗区洽尔斯海鲜烤肉火锅自助餐厅黑龙江牛肉酱(火锅蘸料)/2021/1/795哈尔滨市南岗区洽尔斯海鲜烤肉火锅自助餐厅黑龙江省哈尔滨市南岗区中兴大道哈西商厦地下哈尔滨市南岗区洽尔斯海鲜烤肉火锅自助餐厅黑龙江火锅底料/2021/1/796哈尔滨市道里区群力满堂彩永和快餐店哈尔滨市道里区群力第五大道118号哈尔滨市道里区群力满堂彩永和快餐店黑龙江油条计量销售2021/1/897哈尔滨市南岗区磨豆时光快餐厅黑龙江省哈尔滨市南岗区西宁南路69号金爵万象2栋1-2层5号哈尔滨市南岗区磨豆时光快餐厅黑龙江无矾油条计量销售2021/1/898哈尔滨市南岗区孙悟记旋转小火锅店哈尔滨市南岗区兴达路6号哈尔滨市南岗区孙悟记旋转小火锅店黑龙江火锅底料/2020/12/2299哈尔滨市南岗区孙悟记旋转小火锅店哈尔滨市南岗区兴达路6号哈尔滨市南岗区孙悟记旋转小火锅店黑龙江麻酱(火锅蘸料)/2021/1/7100哈尔滨市南岗区九之门火锅店哈西大街西宁南路南兴街中兴大道D2栋1-2层D2-91号哈尔滨市南岗区九之门火锅店黑龙江麻酱(火锅蘸料)/2021/1/8101哈尔滨市南岗区九之门火锅店哈西大街西宁南路南兴街中兴大道D2栋1-2层D2-91号哈尔滨市南岗区九之门火锅店黑龙江火锅底料/2021/1/7102哈尔滨市南岗区良艳绥化酸菜汤快餐店南岗区哈西大街西宁南路南兴街中兴大道E4栋1-2层E6-50号哈尔滨市南岗区良艳绥化酸菜汤快餐店黑龙江小花卷计量销售2021/1/8103哈尔滨市南岗区良艳绥化酸菜汤快餐店南岗区哈西大街西宁南路南兴街中兴大道E4栋1-2层E6-50号哈尔滨市南岗区良艳绥化酸菜汤快餐店黑龙江红烧肉/2021/1/8104颐海(霸州)食品有限公司河北省廊坊市霸州市经济技术开发区泰山路西简阳市海捞餐饮管理有限公司哈尔滨第五分公司黑龙江清油无渣火锅底料740克/袋2020/11/3105颐海(霸州)食品有限公司河北省廊坊市霸州市经济技术开发区泰山路西简阳市海捞餐饮管理有限公司哈尔滨第五分公司黑龙江牛油无渣火锅底料500克/袋2020/11/7106颐海(霸州)食品有限公司河北省廊坊市霸州市经济技术开发区泰山路西简阳市海捞餐饮管理有限公司哈尔滨第五分公司黑龙江番茄火锅底料600克/袋2020/10/26107简阳市海捞餐饮管理有限公司哈尔滨第五分公司哈尔滨市道里区群力大道2399号银泰城购物中心1024-1、4019号商铺简阳市海捞餐饮管理有限公司哈尔滨第五分公司黑龙江芝麻酱蘸料计量称重2021/1/8108简阳市海捞餐饮管理有限公司哈尔滨第五分公司哈尔滨市道里区群力大道2399号银泰城购物中心1024-1、4019号商铺简阳市海捞餐饮管理有限公司哈尔滨第五分公司黑龙江黄金馒头计量称重2021/1/8109简阳市海捞餐饮管理有限公司哈尔滨第五分公司哈尔滨市道里区群力大道2399号银泰城购物中心1024-1、4019号商铺简阳市海捞餐饮管理有限公司哈尔滨第五分公司黑龙江茴香小油条计量称重2021/1/8110北京圣伦食品有限公司北京市怀柔区庙城镇高各庄村336号呷哺呷哺餐饮管理有限公司哈尔滨杉杉奥莱分店黑龙江印式咖喱火锅底料200克/袋2020/10/23111北京圣伦食品有限公司北京市怀柔区庙城镇高各庄村336号呷哺呷哺餐饮管理有限公司哈尔滨杉杉奥莱分店黑龙江番茄火锅底料200克/袋2020/11/22112山东鼎味食品有限公司德州开发区天衢东路5555号呷哺呷哺餐饮管理有限公司哈尔滨杉杉奥莱分店黑龙江经典升级麻辣火锅底料190g/袋2020/11/11113山东鼎味食品有限公司德州开发区天衢东路5555号呷哺呷哺餐饮管理有限公司哈尔滨杉杉奥莱分店黑龙江姬松茸菌汤火锅底料190g(180g汤料包+10g鸡油包)/袋2020/5/2114山东鼎味食品有限公司德州开发区天衢东路5555号呷哺呷哺餐饮管理有限公司哈尔滨杉杉奥莱分店黑龙江经典原香火锅蘸料115克(65克调味汁包+50克调味酱包)/袋2020/3/26115呷哺呷哺餐饮管理有限公司哈尔滨哈西万达分店黑龙江省哈尔滨市南岗区中兴大道168号哈西万达广场3层3012、3015号商铺呷哺呷哺餐饮管理有限公司哈尔滨哈西万达分店黑龙江麻酱(火锅蘸料)/2021/1/11116黑龙江省关东岁月酒业有限公司哈尔滨高新技术产业开发区科技创新城创新创业广场4号楼(世泽路689号)2106-309室哈尔滨市南岗区肆壹叁壹叁羊庄饭店哈西店黑龙江关东浓悦原浆50°白酒/2020/12/22117绥化市扬名原浆酿酒厂黑龙江省绥化市北林区通望路五公里半路北哈尔滨市南岗区六泰居饭店哈西店黑龙江烧刀子白酒/2020/12/15118巴彦县鑫淼酒厂兴隆镇繁荣街哈尔滨市南岗区蒙源崔记烤羊腿饭店黑龙江白酒/2019/7/1119宾县长安乡纯粮食酒厂宾县长安乡哈尔滨市南岗区石磨豆腐饭庄黑龙江白酒/2020/11/8120哈尔滨市南岗区诚武时尚快餐店黑龙江省哈尔滨市南岗区哈西大街36号A5栋商服单元1层2号哈尔滨市南岗区诚武时尚快餐店黑龙江馒头/2021/1/11121哈尔滨市满邨香酒业有限公司哈尔滨市道里区新农镇苏家屯哈尔滨市南岗区赵氏牧羊人炭火锅店黑龙江红高粱酒/2021/1/6122哈尔滨市平房区正德食品加工厂哈尔滨市平房区平房镇曙光村哈尔滨市南岗区老牌坊鱼豆花火锅万达店黑龙江清油火锅底料775克(底料包765克、干料包10克)/袋2020/12/26123哈尔滨市平房区正德食品加工厂哈尔滨市平房区平房镇曙光村哈尔滨市南岗区老牌坊鱼豆花火锅万达店黑龙江番茄火锅底料340克/袋2020/12/9124//林甸县江湖客熏酱手擀面店黑龙江酱牛肉/2021/1/11125陈家酒坊林甸县新胜三屯林甸县江湖客熏酱手擀面店黑龙江散装高粱白酒50%vol/2020/12/12126//林甸县小苞米农家院饭店黑龙江白水煮肝/2021/1/11127黑龙江省天地仁和酒业有限公司黑龙江省大庆市杜尔伯特蒙古族自治县绿色草原牧场第一作业区林甸县小苞米农家院饭店黑龙江散装高粱白酒42%vol/2020/4/15128哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江省哈尔滨市南岗区西大直街208号哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江骨棒计量称重2021/1/12129哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江省哈尔滨市南岗区西大直街208号哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江脊骨计量称重2021/1/12130//林甸县老根儿笨鸡熏酱小酒馆黑龙江酱猪翘舌/2021/1/11131哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江省哈尔滨市南岗区西大直街208号哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江发糕计量称重2021/1/12132哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江省哈尔滨市南岗区西大直街208号哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江葱油饼计量称重2021/1/12133哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江省哈尔滨市南岗区西大直街208号哈尔滨市南岗区吴记老号酒楼旗舰店黑龙江草帽饼计量称重2021/1/12134//林甸县老根儿笨鸡熏酱小酒馆黑龙江水煮猪大肠/2021/1/11135淑艳酒坊五大连池风景区龙泉村淑艳酒坊林甸县老根儿笨鸡熏酱小酒馆黑龙江散装大米白酒42%vol/2020/12/28136德惠市好酒坊酒厂吉林省德惠市惠发开发区林甸县老根儿笨鸡熏酱小酒馆黑龙江散装白酒43%vol/2020/9/12137哈尔滨市南岗区畅业熏卤酱小酒馆哈尔滨市南岗区科研路55号1层商服哈尔滨市南岗区畅业熏卤酱小酒馆黑龙江酱猪肚计量称重2021/1/11138哈尔滨市南岗区畅业熏卤酱小酒馆哈尔滨市南岗区科研路55号1层商服哈尔滨市南岗区畅业熏卤酱小酒馆黑龙江烧鸡计量称重2021/1/11139哈尔滨金诺食品有限公司通河县通河镇东兴街建华冷冻库哈尔滨市南岗区辣莊重庆老火锅哈西大街店黑龙江牛油火锅底料250克/袋2020/12/12140辣锦记(哈尔滨)食品有限公司哈尔滨高新技术产业开发区迎宾路集中区太行路1号哈尔滨市南岗区辣莊重庆老火锅哈西大街店黑龙江秘制麻酱5kg/袋2021/1/9141//林甸县早饭堂营养早餐店黑龙江油条/2021/1/13142//林甸县早饭堂营养早餐店黑龙江酸菜包子/2021/1/13143//林甸县早饭堂营养早餐店黑龙江芹菜包子/2021/1/13144//林甸县珍粥道人家早餐店黑龙江酸菜包子/2021/1/13145哈尔滨市松北区潘记粥铺融创店哈尔滨市松北区世纪花园小区C区76号楼5号商服哈尔滨市松北区潘记粥铺融创店黑龙江发糕计量销售2021/1/13146哈尔滨市松北区潘记粥铺融创店哈尔滨市松北区世纪花园小区C区76号楼5号商服哈尔滨市松北区潘记粥铺融创店黑龙江油饼计量销售2021/1/13147哈尔滨市松北区周纪纯碱馒头发面饼店哈尔滨市松北区世纪花园A区6栋26号车库哈尔滨市松北区周纪纯碱馒头发面饼店黑龙江馒头计量销售2021/1/13148哈尔滨市松北区周纪纯碱馒头发面饼店哈尔滨市松北区世纪花园A区6栋26号车库哈尔滨市松北区周纪纯碱馒头发面饼店黑龙江花卷计量销售2021/1/13149哈尔滨市道里区裕宝隆老家乡铁锅炖餐馆黑龙江省哈尔滨市道里区安丰街44号1层1号哈尔滨市道里区裕宝隆老家乡铁锅炖餐馆黑龙江小花卷计量称重2021/1/13150济南百乐泉酒业有限公司山东省济南市天桥区无影山中路153号香港国际小区3号楼1-902哈尔滨市道里区裕宝隆老家乡铁锅炖餐馆黑龙江高粱酒计量称重2021/1/5151哈尔滨市松北区春佰家砂锅王老油饼饭店黑龙江省哈尔滨市松北区世纪花园A区92栋2号商服哈尔滨市松北区春佰家砂锅王老油饼饭店黑龙江油饼计量销售2021/1/13152哈尔滨市松北区春佰家砂锅王老油饼饭店黑龙江省哈尔滨市松北区世纪花园A区92栋2号商服哈尔滨市松北区春佰家砂锅王老油饼饭店黑龙江草帽饼计量销售2021/1/13153泸州大龙酒业有限公司四川省泸州市嘉明镇工业园区哈尔滨市松北区婀素木铁锅炖饭店黑龙江白酒/2019/10/17154四川省古蔺郎酒厂有限公司 四川省古蔺县二郎镇哈尔滨市南岗区高粱红了铁锅炖饭店黑龙江散白酒/2021/1/3155辽宁奉京酒业有限公司辽宁省沈阳市辽中区肖寨门镇肖北村哈尔滨市松北区粥之家小酒馆黑龙江高粱原浆50度/2020/12/25156哈尔滨市松北区粥之家小酒馆哈尔滨市松北区万达城B1-2栋4号商服哈尔滨市松北区粥之家小酒馆黑龙江粉肠/2021/1/13157尚志市石头河子镇禄平白酒厂黑龙江省哈尔滨市尚志市石头河子镇哈尔滨市松北区粥之家小酒馆黑龙江固态法白酒/2018/12/9158哈尔滨市松北区粥之家小酒馆哈尔滨市松北区万达城B1-2栋4号商服哈尔滨市松北区粥之家小酒馆黑龙江小肚/2021/1/13159哈尔滨市松北区粥之家小酒馆哈尔滨市松北区万达城B1-2栋4号商服哈尔滨市松北区粥之家小酒馆黑龙江酱脊骨/2021/1/13160黑龙江全味生物科技有限公司哈尔滨市松北新区后城村哈尔滨市松北区旺莊重庆老火锅店黑龙江牛肉酱1000g/袋2020/12/5161黑龙江全味生物科技有限公司哈尔滨市松北新区后城村哈尔滨市松北区旺莊重庆老火锅店黑龙江沙茶酱1000g/袋2020/8/12162黑龙江全味生物科技有限公司哈尔滨市松北新区后城村哈尔滨市松北区旺莊重庆老火锅店黑龙江XO酱1000g/袋2020/11/19163重庆梅香园实业集团有限公司重庆市合川工业园区哈尔滨市松北区旺莊重庆老火锅店黑龙江复合汤调料(咖喱汤风味)500g/袋2020/9/22164重庆梅香园实业集团有限公司重庆市合川工业园区哈尔滨市松北区旺莊重庆老火锅店黑龙江火锅底料(老火锅底料110号风味)500g/袋2020/9/23165黑龙江鑫德惠酒业有限公司哈尔滨市道外区团结镇哈尔滨市道里区秦记老屯铁锅炖饭店黑龙江白酒/2020/7/13166黑龙江鑫德惠酒业有限公司哈尔滨市道外区团结镇哈尔滨市道里区秦记老屯铁锅炖饭店黑龙江白酒/2020/7/13167哈尔滨市道里区秦记老屯铁锅炖饭店哈尔滨市道里区松源街73号哈尔滨市道里区秦记老屯铁锅炖饭店黑龙江花卷/2021/1/12168北京二锅头酒业股份有限公司北京市大兴区瀛海工业区兴海路2号哈尔滨市博香园熏酱店黑龙江白酒/2019/10/23169哈尔滨市南岗区官六酒坊南岗区红旗满族乡旭光村(南红03-620)哈尔滨市南岗区刘掌门熏酱坊黑龙江白酒/2020/5/12170哈尔滨市南岗区张家粥铺科研街店黑龙江省哈尔滨市南岗区科研街38-15号1-2层7号商服哈尔滨市南岗区张家粥铺科研街店黑龙江红枣发糕/2021/1/12171哈尔滨市南岗区厨状元肘子饭店哈尔滨市南岗区征仪花园小区A109栋商服8号哈尔滨市南岗区厨状元肘子饭店黑龙江发糕/2021/1/10172天津渔阳酒业有限责任公司蓟州区上仓镇哈尔滨市南岗区厨状元肘子饭店黑龙江白酒/2019/11/11173宾县满井薛家白酒小作坊宾县满井镇千合村于占元屯哈尔滨市南岗区石府民间菜馆黑龙江散白酒/2019/12/15174哈尔滨市南岗区权华红烧肉排骨米饭店哈尔滨市南岗区科研街34号哈尔滨市南岗区权华红烧肉排骨米饭店黑龙江油饼/2021/1/12175哈尔滨市南岗区权华红烧肉排骨米饭店哈尔滨市南岗区科研街34号哈尔滨市南岗区权华红烧肉排骨米饭店黑龙江草帽饼/2021/1/12176哈尔滨市南岗区权华红烧肉排骨米饭店哈尔滨市南岗区科研街34号哈尔滨市南岗区权华红烧肉排骨米饭店黑龙江花卷/2021/1/12177哈尔滨市南岗区杜奶奶牛肉馅饼哈西店哈尔滨市南岗区西宁南路83号金爵万象3栋1-2层2号哈尔滨市南岗区杜奶奶牛肉馅饼哈西店黑龙江油条/2021/1/12178哈尔滨市道里区百姓火锅店哈尔滨市道里区群力第六大道与朗江路交汇处第35栋1-2层09号商服哈尔滨市道里区百姓火锅店黑龙江芝麻酱/2021/1/11179重庆梅香园实业集团有限公司重庆市合川工业园区哈尔滨市道里区百姓火锅店黑龙江火锅底料(澳洲肥牛底料风味)500g/袋2020/11/4180//哈尔滨市道里区百姓火锅店黑龙江牛肉酱/2021/1/8181//哈尔滨市道里区百姓火锅店黑龙江孜然酱/2021/1/8182哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江草帽饼/2021/1/11183哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江葱花饼/2021/1/11184哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江大肚/2021/1/11185哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江粉肠/2021/1/11186哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江松花小肚/2021/1/11187哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江熏猪脊骨架/2021/1/11188哈尔滨市南岗区六泰居饭店哈尔滨市南岗区学府路1号福顺尚都5栋1层1号哈尔滨市南岗区六泰居饭店黑龙江熏猪耳/2021/1/11189哈尔滨市南岗区沈加记中式快餐哈西店南岗区哈西大街西宁南路南兴街中兴大道E4栋1-2层E6-41号哈尔滨市南岗区沈加记中式快餐哈西店黑龙江油盐发面饼/2021/1/11190哈尔滨市南岗区沈加记中式快餐哈西店南岗区哈西大街西宁南路南兴街中兴大道E4栋1-2层E6-41号哈尔滨市南岗区沈加记中式快餐哈西店黑龙江发糕/2021/1/11191哈尔滨市南岗区沈加记中式快餐哈西店南岗区哈西大街西宁南路南兴街中兴大道E4栋1-2层E6-41号哈尔滨市南岗区沈加记中式快餐哈西店黑龙江花卷/2021/1/11192//哈尔滨市道里区百姓火锅店黑龙江香菇酱/2021/1/8193宾县满井薛家白酒小作坊宾县满井镇千合村于占元屯哈尔滨市南岗区石府民间菜馆黑龙江散白酒/2019/12/15194//大庆市让胡路区百姓铜火锅店黑龙江芝麻酱/2021/1/13195//大庆市让胡路区百姓铜火锅店黑龙江火锅底料/2020/12/1196//大庆市让胡路区汇川港火锅店黑龙江芝麻酱/2021/1/14197//大庆市让胡路区汇川港火锅店黑龙江火锅底料/2021/1/14198//大庆市让胡路区马老吉火锅店黑龙江芝麻酱/2021/1/14199//大庆市让胡路区马老吉火锅店黑龙江火锅底料/2021/1/13200//大庆市让胡路区匹夫火锅店黑龙江芝麻酱/2021/1/13201//大庆市让胡路区匹夫火锅店黑龙江火锅底料/2021/1/11202//大庆市浆豆和永餐饮有限公司黑龙江油条/2021/1/15203//大庆市让胡路区米香滋养粥铺黑龙江素包子/2021/1/15204//大庆市浆豆和永餐饮有限公司黑龙江小笼包/2021/1/15205//大庆市让胡路区米香滋养粥铺黑龙江牛肉包子/2021/1/15206//大庆市让胡路区米香滋养粥铺黑龙江油条/2021/1/15207昌勃白酒黑龙江省富锦市大庆市让胡路区海哥传统火锅店黑龙江昌勃高粱小烧50%vol/2021/1/1208呷哺呷哺餐饮管理有限公司北京市大兴区黄村镇孙村组团物顺南路北侧呷哺呷哺餐饮管理有限公司哈尔滨融创茂分店黑龙江麻辣火锅底料190g/袋2020/11/27209//大庆市让胡路区海哥传统火锅店黑龙江芝麻酱/2021/1/15210//大庆市让胡路区海哥传统火锅店黑龙江火锅底料/2021/1/5211呷哺呷哺餐饮管理有限公司北京市大兴区黄村镇孙村组团物顺南路北侧呷哺呷哺餐饮管理有限公司哈尔滨融创茂分店黑龙江泰式冬阴功酸辣火锅底料180g/袋2020/12/11212呷哺呷哺餐饮管理有限公司北京市大兴区黄村镇孙村组团物顺南路北侧呷哺呷哺餐饮管理有限公司哈尔滨融创茂分店黑龙江印式咖喱火锅底料190g/袋2020/12/4213//大庆市让胡路区超子自助酱骨活鱼锅店黑龙江酱骨头/2021/1/15214//呷哺呷哺餐饮管理有限公司哈尔滨融创茂分店黑龙江菌菇酱/2021/1/15215哈尔滨市香坊区稻香之家粥铺黑龙江省哈尔滨市香坊区三辅街109号1层哈尔滨市香坊区稻香之家粥铺黑龙江发糕计量销售2021/2/21216哈尔滨市松北区万宝晓辉地锅鱼餐馆黑龙江省哈尔滨市松北区华润幸福里小区8栋1-2层118号商服哈尔滨市松北区万宝晓辉地锅鱼餐馆黑龙江花卷/2021/2/23217哈尔滨市松北区邢员外饭店黑龙江省哈尔滨市松北区滨北路2330、祥安南大街1911号哈尔滨市松北区邢员外饭店黑龙江大花卷/2021/2/23 相关文章推荐阅读: