如何在网页上部署深度学习模型?
当训练好你的深度学习模型后,就可以考虑部署了。 今天介绍一种简易的部署方式:使用Flask作为后端,将PyTorch模型部署到网页上。 网络模型使用的是torchvision中集成的densenet121,并且已经在imagenet数据集上进行了预训练,网络的输入是1张图片,输出是这张图片的类别(1 from...
经典语义分割网络:UNet
UNetUNet是为了解决医学图像分割任务提出的,它基于FCN,并设计了更为巧妙的网络结构: 由于网络结构看起来像一个U字母,因此得名UNet. 从整体来看,左侧是编码器部分,负责提取输入图像的高层语义信息;右侧是解码器部分,负责解码高层语义信息并输出最终的分割图。 在解码阶段,还引入了类似跳连的结构,将编码阶段的中间结果直接加了进来。 观察UNet的网络结构,可以发现: 编码器重复如下结构:两次卷积使得通道数加倍,后接一次池化使得特征图尺寸减半。 解码器重复如下结构:上采样使得特征图尺寸加倍,后接两次卷积使得通道数减半。 值得注意的是,在语义分割中,输入与输出的尺寸一般都是是一致的,而UNet却不同。 UNet是为医学图像分割任务而设计的,为了更好的预测图像边界区域,采用了Overlap-tile...
经典语义分割网络:FCN
从分类任务说起语义分割是一个像素级的分类任务。 在图像分类任务中,输入一张图片,输出这张图片的类别。 在语义分割任务中,输入一张图片,输出这张图片中每一个像素所属类别,因此,语义分割中输入的图像(通道数为3,一般的图片通常含有RGB这3个通道)尺寸和输出结果(也是一张图,通道数为1,每个像素点的取值代表该像素点所属类别对应的取值)的尺寸是一样的。 在之前,我们已经实现过许多的分类网络,这些网络最后都在卷积层后面接上全连接层,以输出分类结果。 但是语义分割的输出是一张单通道的图片,所以直接将以上网络拿过来用是行不通的。 FCN的网络结构FCN( Fully Convolutional Networks, ...
经典推荐模型:NFM
NFM将FM中的二阶交叉项替换成了一个神经网络,使得NFM能够进行二阶以及二阶之上的特征交叉,增强了模型的表达能力。 NFM模型如下: 其中的f(x)便是上面提及的用于替换FM中二阶交叉项的神经网络。 NFM的结构如下,注意,这里并没有画出来一阶部分,只展示了f(x): 自下往上看。 将输入的稀疏特征向量经过Embedding层,得到对应的稠密编码向量。注意图中的$v_i,i=2,4,7,…$是一个n*k的矩阵,n是第i个特征域所含不同特征取值总数,k是Embedding的维度。 接下来进入BiInteraction Pooling层进行特征交叉,该层所执行的操作如下: $x_iv_i$是一个长度为k的向量(k是Embedding的维度,其实这个向量就是第i个类别特征取值对应的Embedding向量),$x_jv_j$同样也是一个长度为k的向量,两者做element-wise product,即使对应位置相乘,此时得到的还是一个长度为k的向量。在进行完所有特征交叉(即element-wise...
用Python实现协同过滤算法
本文分享两种经典协同过滤算法的Python实现: 基于物品的协同过滤算法 基于用户的协同过滤算法 代码来自Github开源项目:fun-rec. 在开始之前,先导入用到的库: 1234567import pandas as pdimport numpy as npimport warningsimport random, math, osfrom tqdm import tqdmfrom sklearn.model_selection import train_test_splitwarnings.filterwarnings('ignore') 数据准备本次使用的数据是一份电影评分数据: ::将数据集划分成4列,从左到右分别代表:用户id,电影id,评分值,时间戳。 首先将原始数据转换成pandas的数据框表示: 然后提取每个用户评价过的电影,格式如下: 稍后的ItemCF和UserCF都将使用这个表。 数据处理完整代码如下: 12345678910111213141516171819202122232425262728def...
经典推荐模型:FNN,DeepFM
之前我们已经介绍了FM模型,在进入深度学习时代后,通过将FM模型与深度学习模型进行结合,产生了许多有用的新模型,本文将介绍其中的两种:FNN和DeepFM. FNNFNN的结构如下: 结构很简单,在底层将多个特征域中的稀疏向量进行了Embedding,然后将Embedding的结果输入到全连接层进行特征交叉,最后输出预测结果。 FM模型为每一个特征学习了一个隐向量,两个特征交叉得到的新特征的系数等于这两个特征对应隐向量的内积。 而FNN直接将训练好的FM的权重(一阶特征权重+隐向量)拿了过来,作为自己的Embedding层的初始化权重。 只考虑隐向量,假设某特征域的总类别数为n,隐向量(Embedding的维度)是k,那么在...
基于NeuralCF的图书推荐系统
本文将对CCF《图书推荐系统竞赛》官方baseline进行详细解读,并修正一些错误,修正后的jupyter notebook文件可以在公众号”南极Python”后台回复图书推荐自行获取。 赛题地址:https://www.datafountain.cn/competitions/542 题目介绍背景随着新型互联网的发展,人类逐渐进入了信息爆炸时代。新型电商网络面临的问题也逐渐转为如何让用户从海量的商品中挑选到自己想要的目标。推荐系统正是在互联网快速发展之后的产物。为帮助电商系统识别用户需求,为用户提供其更加感兴趣的信息,从而为用户提供更好的服务,需要依据真实的图书阅读数据集,利用机器学习的相关技术,建立一个图书推荐系统。用于为用户推荐其可能进行阅读的数据,从而在产生商业价值的同时,提升用户的阅读体验,帮助创建全民读书的良好社会风气。 任务依据真实世界中的用户-图书交互记录,利用机器学习相关技术,建立一个精确稳定的图书推荐系统,预测用户可能会进行阅读的10本书籍。 数据包含训练集和测试集,以及提交示例文件。 训练集中存储了用户与图书之间的交互信息,比如第一行:...
跨考小白学刷题(下)
第八章:回溯8-3排列问题 我自己(在看了答案后默)写的AC代码: 12345678910111213141516171819class Solution: def permute(self, nums: List[int]) -> List[List[int]]: if not nums: return [] def back_track(nums,index): if index==len(nums): res.append(p[:])#必须加这个:,因为path之后还会变 return for num in nums: if num not in p: p.append(num) back_track(nums,index+1) p.pop() ...
跨考小白学刷题(上)
第一章1-1 对一组数据进行排序时,要考虑这组数据有什么样的特征。 包含大量重复元素->三路快排 近乎有序->插入排序 取值范围有限->计数排序 要求稳定排序->归并排序 使用链表存储->...