Pytorch 实现 MLP

torch.nn是专门为神经网络设计的模块化接口。nn构建于 Autograd之上,可用来定义和运行神经网络。
nn.functional,这个包中包含了神经网络中使用的一些常用函数,这些函数的特点是,不具有可学习的参数(如ReLU,pool,DropOut等),这些函数可以放在构造函数中,也可以不放,但是这里建议不放。

定义一个网络

PyTorch中已经为我们准备好了现成的网络模型,只要继承nn.Module,并实现它的forward方法,PyTorch会根据autograd,自动实现backward函数。

import torch
import torch.nn as nn
import torch.nn.functional as Fclass MLP(nn.Module):def __init__(self, user_num, user_dim, layers=[32, 16, 8]):super(MLP, self).__init__()  # 子类函数必须在构造函数中执行父类构造函数self.user_Embedding = nn.Embedding(user_num, user_dim)self.mlp = nn.Sequential() for id in range(1, len(layers)):  # 这样可以实现MLP层数和每层神经单元数的自动调整self.mlp.add_module("Linear_layer_%d" % id, nn.Linear(layers[id - 1], layers[id]))self.mlp.add_module("Relu_layer_%d" % id, nn.ReLU(inplace=True))self.predict = nn.Sequential(nn.Linear(layers[-1], 1),nn.Sigmoid(),)def forward(self, x):user = self.user_Embedding(x)user = self.mlp(user)score = self.predict(user)return scoremodel = MLP(1000, 64)
print(model)
MLP((user_Embedding): Embedding(1000, 64)(mlp): Sequential((Linear_layer_1): Linear(in_features=32, out_features=16, bias=True)(Relu_layer_1): ReLU(inplace=True)(Linear_layer_2): Linear(in_features=16, out_features=8, bias=True)(Relu_layer_2): ReLU(inplace=True))(predict): Sequential((0): Linear(in_features=8, out_features=1, bias=True)(1): Sigmoid())
)
for parameters in model.parameters():print(parameters)
Parameter containing:
tensor([[ 0.4192, -1.0525,  1.4208,  0.5376,  2.1371,  0.7074,  0.1017,  0.9701, 1.2824, -0.0436],[-0.6374,  0.0153, -0.1862, -0.6061,  0.5522, -1.1526,  0.3913,  0.3103,-0.1055,  0.6098],[-0.0367, -0.9573, -0.5106, -1.2440,  1.2201, -0.5424,  0.2045,  0.2208,-0.7557, -0.7811],[ 0.5457,  0.3586,  0.9871, -0.2117,  1.0885,  1.7162, -0.2125,  0.2652,-0.3262,  0.3047],[ 0.1039,  0.8132,  0.6638,  0.2618,  0.8552,  0.8300,  0.2349,  1.8830,-0.5149, -1.0468]], requires_grad=True)
Parameter containing:
tensor([[-0.2395,  0.1461, -0.0161,  0.0267, -0.0353,  0.2085,  0.0046, -0.1572],[ 0.2267,  0.0129, -0.3296, -0.2270,  0.2268,  0.1771, -0.0992,  0.2148],[ 0.1906,  0.1896, -0.2703, -0.3506,  0.0248,  0.1949, -0.3117,  0.0721],[-0.3197,  0.2782, -0.1553,  0.2509,  0.0279,  0.2040, -0.1478,  0.2943]],requires_grad=True)
Parameter containing:
tensor([ 0.0808, -0.3252, -0.0015, -0.0666], requires_grad=True)
Parameter containing:
tensor([[-0.3243,  0.4393, -0.2430,  0.4330]], requires_grad=True)
Parameter containing:
tensor([-0.0739], requires_grad=True)
for name,parameters in model.named_parameters():print(name,':',parameters.size())
user_Embedding.weight : torch.Size([5, 10])
mlp.Linear_layer_1.weight : torch.Size([4, 8])
mlp.Linear_layer_1.bias : torch.Size([4])
predict.0.weight : torch.Size([1, 4])
predict.0.bias : torch.Size([1])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 104. 二叉树的最大深度

文章目录1. 题目信息2. 解题2.1 递归法2.2 按层遍历1. 题目信息 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7]&…

谷歌重磅:可以优化自己的优化器!手动调参或将成为历史!?

文 | 小轶编 | 夕小瑶背景Google Brain团队发布的一篇最新论文在外网引发热议,或将成为Deep Learning发展历程上里程碑式的工作。它所讨论的,是所有AI行业者都要面对的——Deep Learning中的优化问题。也就是,如何更好地训练一个模型。深度模…

最全目标检测相关资料整理 (目标检测+数据增强+卷价神经网络+类别不均衡...)

1 小目标检测:综述:综述论文Augmentation for small object detection深度学习笔记(十)Augmentation for small object detection(翻译) 吴建明wujianning:小目标检测的增强算法 机器之心&#…

论文浅尝 | 基于未知谓词与实体类型知识图谱的 Zero-Shot 问题生成

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:NAACL 2018链接:https://www.aclweb.org/anthology/N18-1020问题背景与动机问题生成的目标是将知识图谱三元组作为输入,生成自然语…

阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

内容大纲: 1.介绍Restful、SOAP、RPC、SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的…

RuntimeError: Expected object of device type cuda but got device type cpu for argument #2 'target'

RuntimeError: Expected object of device type cuda but got device type cpu for argument #2 ‘target’ in call to _thnn_binary_cross_entropy_forward 出错误背景:Pytorch 中想使用 CUDA 对程序计算进行加速 错误的意思:object 的 device 类型期…

微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较

在微服务架构中,分布式通信、分布式事务、分布式锁等问题是亟待解决的几个重要问题。 Spring Cloud是一套完整的微服务解决方案,基于 Spring Boot 框架。确切的说,Spring Cloud是一个大容器(而不是一个框架)&#xff…

经典教材《统计学习导论》现在有了Python版

文 | 张倩源 | 机器之心《统计学习导论》很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现。斯坦福经典教材《The Element of Statistical Learning》(简称 ESL)被称为频率学派的统计学习「圣经」&#xff0…

安装tensorflow出现超时,找不到指定模+python 各个指定版本安装

安装tensorflow出现超时,找不到指定模块 https://www.jianshu.com/p/b886fd6db895 python 各个指定版本安装 https://pypi.org/project/tensorflow/1.14.0/#files

漆桂林 | 人工智能的浪潮中,知识图谱何去何从?

本文转载自公众号:AI科技大本营。近年来,随着人们对 AI 认知能力的积极探索,知识图谱因其表达能力强、拓展性好,基于知识进行推理等优势得到了学界与业界的高度关注。知识图谱,旨在描述客观世界概念、实体、事件及其之…

Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you

RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the ‘spawn’ start method 问题出现的背景:在一个使用 cuda 对模型训练进行加速的程序中,想要使用多进程对模型测试进行加速。 解决…

LeetCode 102. 二叉树的层次遍历(BFS)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其层次遍历结果:[[3]…

阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程。 …

数码摄影(扫街)

快门速度: 快门速度是曝光控制的一个重要变量,能够控制光线进入的多少。 快门的速度越快,时间越短,通过的光线就越少,反之,则越多。 在很好光线下,1/125s就能清晰地捕捉到行走中的人物。 阴天…

基于百度开源项目LAC实现文本分词、词性标注和命名实体识别

文本分词、词性标注和命名实体识别都是自然语言处理领域里面很基础的任务,他们的精度决定了下游任务的精度,今天在查资料的时候无意间发现了一个很好玩的开源项目,具体查了一下才知道这是百度开源的一个主要用于词性标注和命名实体识别的项目…

论文浅尝 | 让“演进知识图谱”带你“瞻前顾后”看世界

本文转载自公众号:爱思美谱。 指导老师 | 傅洛伊 王新兵核心技术成员 | 刘佳琪导读在前面几期的内容中,小编已经为大家介绍了知识图谱的产生历史和基本概念。相信大家已经对知识图谱强大的信息结构化能力有所了解。但是,目前的大部分知识…

做过leader,会数仓,项目经验丰富,能值多少钱?

有个朋友,上个月准备从 Java 转做大数据,一个月过去了,一份面试都没约到,来问我怎么回事。我一看简历,期望年薪 40w,深度也不够,要大项目也没有。我们做大数据的,虽说是薪资高&#…

LeetCode 98. 验证二叉搜索树(中序遍历)

文章目录1. 题目信息2. 解题2.1 递归中序2.2 非递归中序1. 题目信息 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和…

阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景

什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如: 统一命名服务 状态同步服务 集群管理 分布式应用配置项的管理等 Zookeeper已经成为Hadoop生态系统…

GNN学习一

一、为什么使用图卷积 传动的深度学习方法,比如卷积网络,效果很好,但是它研究的对象是Euclidean data,这种数据的特征就是有规则的空间结构,比如图片是规则的正方形格子,比如语音是规则的一维序列。这些数…