NeuCF源码中用到的模块(函数)

论文:《Neural Collaborative Filtering》源码中用到的模块(函数)

from keras.layers import Embedding, Input, Dense, merge, Reshape, Merge, Flatten

 

(1)Input():用于实例化 Keras 张量
keras.engine.input_layer.Input()
参数:
  • shape: 一个尺寸元组(整数),不包含批量大小。 例如,shape=(32,) 表明期望的输入是按批次的 32 维向量。
  • batch_shape: 一个尺寸元组(整数),包含批量大小。 例如,batch_shape=(10, 32)表明期望的输入是 10 个 32 维向量。 batch_shape=(None, 32) 表明任意批次大小的 32 维向量。
  • name: 一个可选的层的名称的字符串。 在一个模型中应该是唯一的(不可以重用一个名字两次)。 如未提供,将自动生成。
  • dtype: 输入所期望的数据类型,字符串表示 (float32, float64, int32...)
  • sparse: 一个布尔值,指明需要创建的占位符是否是稀疏的。
  • tensor: 可选的可封装到 Input 层的现有张量。 如果设定了,那么这个层将不会创建占位符张量。
返回:一个张量。
(2)Embedding(): 将正整数(索引值)转换为固定尺寸的稠密向量。 例如: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]。 该层只能用作模型中的第一层。
参数:
  • input_dim: int > 0。词汇表大小, 即,最大整数 index + 1。
  • output_dim: int >= 0。词向量的维度。
  • embeddings_initializer: embeddings 矩阵的初始化方法 (详见 initializers)。
  • embeddings_regularizer: embeddings matrix 的正则化方法 (详见 regularizer)。
  • embeddings_constraint: embeddings matrix 的约束函数 (详见 constraints)。
  • mask_zero: 是否把 0 看作为一个应该被遮蔽的特殊的 "padding" 值。 这对于可变长的 循环神经网络层 十分有用。 如果设定为 True,那么接下来的所有层都必须支持 masking,否则就会抛出异常。 如果 mask_zero 为 True,作为结果,索引 0 就不能被用于词汇表中 (input_dim 应该与 vocabulary + 1 大小相同)。
  • input_length: 输入序列的长度,当它是固定的时。 如果你需要连接 Flatten 和 Dense 层,则这个参数是必须的 (没有它,dense 层的输出尺寸就无法计算)。
输入尺寸: 尺寸为 (batch_size, sequence_length) 的 2D 张量。
输出尺寸: 尺寸为 (batch_size, sequence_length, output_dim) 的 3D 张量。
(3)Flatten(): 将输入展平。不影响批量大小。
参数
  • data_format:一个字符串,其值为 channels_last(默认值)或者 channels_first。它表明输入的维度的顺序。此参数的目的是当模型从一种数据格式切换到另一种数据格式时保留权重顺序。channels_last 对应着尺寸为 (batch, ..., channels) 的输入,而 channels_first 对应着尺寸为 (batch, channels, ...) 的输入。默认为 image_data_format 的值,你可以在 Keras 的配置文件 ~/.keras/keras.json 中找到它。如果你从未设置过它,那么它将是 channels_last
(4)Dense(): 就是常用的全连接层。
Dense 实现以下操作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用)。
  • 注意: 如果该层的输入的秩大于2,那么它首先被展平然后 再计算与 kernel 的点乘。
参数
  • units: 正整数,输出空间维度。
  • activation: 激活函数 (详见 activations)。 若不指定,则不使用激活函数 (即,「线性」激活: a(x) = x)。
  • use_bias: 布尔值,该层是否使用偏置向量。
  • kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
  • bias_initializer: 偏置向量的初始化器 (see initializers).
  • kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
  • bias_regularizer: 运用到偏置向的的正则化函数 (详见 regularizer)。
  • activity_regularizer: 运用到层的输出的正则化函数 (它的 "activation")。 (详见 regularizer)。
  • kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
  • bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。
输入尺寸:  nD 张量,尺寸: (batch_size, ..., input_dim)。 最常见的情况是一个尺寸为 (batch_size, input_dim) 的 2D 输入。
输出尺寸: nD 张量,尺寸: (batch_size, ..., units)。 例如,对于尺寸为 (batch_size, input_dim) 的 2D 输入, 输出的尺寸为 (batch_size, units)。
(5)compile():用于配置训练模型
compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
参数:
  • optimizer: 字符串(优化器名)或者优化器实例。 详见 optimizers。
  • loss: 字符串(目标函数名)或目标函数。 详见 losses。 如果模型具有多个输出,则可以通过传递损失函数的字典或列表,在每个输出上使用不同的损失。 模型将最小化的损失值将是所有单个损失的总和。
  • metrics: 在训练和测试期间的模型评估标准。 通常你会使用 metrics = ['accuracy']。 要为多输出模型的不同输出指定不同的评估标准, 还可以传递一个字典,如 metrics = {'output_a':'accuracy'}。
  • loss_weights: 可选的指定标量系数(Python 浮点数)的列表或字典, 用以衡量损失函数对不同的模型输出的贡献。 模型将最小化的误差值是由 loss_weights 系数加权的加权总和误差。 如果是列表,那么它应该是与模型输出相对应的 1:1 映射。 如果是张量,那么应该把输出的名称(字符串)映到标量系数。
  • sample_weight_mode: 如果你需要执行按时间步采样权重(2D 权重),请将其设置为 temporal。 默认为 None,为采样权重(1D)。 如果模型有多个输出,则可以通过传递 mode 的字典或列表,以在每个输出上使用不同的 sample_weight_mode。
  • weighted_metrics: 在训练和测试期间,由 sample_weight 或 class_weight 评估和加权的度量标准列表。
  • target_tensors: 默认情况下,Keras 将为模型的目标创建一个占位符,在训练过程中将使用目标数据。 相反,如果你想使用自己的目标张量(反过来说,Keras 在训练期间不会载入这些目标张量的外部 Numpy 数据), 您可以通过 target_tensors 参数指定它们。 它可以是单个张量(单输出模型),张量列表,或一个映射输出名称到目标张量的字典。
  • **kwargs: 当使用 Theano/CNTK 后端时,这些参数被传入 K.function。 当使用 TensorFlow 后端时,这些参数被传递到 tf.Session.run。

 

 

 

【Reference】

1、Docs »Layers »核心网络层: https://keras.io/zh/layers/core/

2、Docs »模型 »函数式 API:https://keras.io/zh/models/model/#compile 

转载于:https://www.cnblogs.com/shenxiaolin/p/11163061.html

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

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

相关文章

awt jtable 多线程加载图片_Java项目实战之天天酷跑(三):缓冲加载游戏界面

前文,我们完成了开始游戏界面的搭建。本文将实现缓冲加载界面的搭建。并搭建与前面俩界面间的桥梁。实现输入正确用户名密码后,进入开始游戏界面,点击开始游戏按钮后,进入缓冲加载界面的功能。界面示意图:具体要求&…

When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向...

链接:http://ucys.ugr.es/jnic2016/docs/MachineLearning_LiorRokachJNIC2016.pdf https://people.eecs.berkeley.edu/~adj/publications/paper-files/SecML-MLJ2010.pdf 一些关键点: 算了,不总结了。 本文转自张昺华-sky博客园博客&#xff…

如何使用TypeScript和Webpack Hot Module Replacement构建Apollo GraphQL服务器

by Derek Fong由德里克方(Derek Fong) 如何使用TypeScript和Webpack Hot Module Replacement构建Apollo GraphQL服务器 (How to build an Apollo GraphQL server with TypeScript and Webpack Hot Module Replacement) Let’s build an Apollo GraphQL Server with TypeScript…

本地修改指向服务器,本地修改指向服务器

本地修改指向服务器 内容精选换一换已获取服务器管理员帐号与密码。打开CMD运行窗口,输入gpedit.msc,打开本地组策略编辑器。打开组策略在指定RD会话主机服务器的授权模式下拉列表中选择按用户。设置允许RD最大连接数位999999。设置结束已断开连接的会话…

JUnit的使用

JUnit的作用(是一个第三方的组件,eclipse带了JUnit) 一个工具,用于单元测试,Java Unit 单元单元:一个类或是一个方法2. 在eclipse中的使用 操作步骤:在工程名上点右键-> Build Path -> add Libraries –> JUnit 测试方法…

乘法运算

无符号mul和有符号imul,在编译的过程中,先尝试将乘法转换成加法 或使用移位指令等周期转移较短的指令,如果都没有才用乘法指令 int main(int argc,char *argv) {int nVarOne argc;int nVarTwo argc;// 变量乘常量 (非2的幂)printf("nV…

leetcode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。 注意: 允许出现重复元素。 insert(val):向集合中插入元素 val。 remove(val):当 val 存在时,从集合中移除一个 val。 getRandom:从现有集合中随机…

MAYA建模桌面一角_maya怎么建模逼真的学生书桌书桌桌面?

今天我们就来看看使用maya建模学生书桌的方法,这是实例教程,请看下文详细介绍。NURBS曲线的基础知识:NURBS曲面是由网状的曲线组合而成,在maya中可以使用creat菜单下的CV Curve Tool(CV曲线工具)EP Curve Tool(EP曲线工具)来创建曲…

expect 批量修改服务器用户密码

每个技术人员离职,留下的人 就要修改他的服务器账号密码,很麻烦,故写次脚本偷懒 change.sh 如下 12345678910#!/bin/bashfor i in awk {print $1} account.txt dojawk -v l"$i" {if(l$1)print $2} account.txt aawk -v l"$i&q…

虚拟机安装服务器2008,VMware Workstation 虚拟机安装64位windows 2008 R2 系统

偶看现在使用的电脑是 惠普 康柏 Elite 8300 MT Mini Tower,操作系统 Windows 7 旗舰版 64位基本硬件展示处理器 英特尔 第三代酷睿 i5-3470 3.20GHz 四核主板 惠普 3397内存 8 GB ( 记忆科技 DDR3 1600MHz / 镁光 DDR3 1600MHz )主硬盘 西数 WDC WD5000AAKX-60U6A…

黑客入门之单机游戏外挂

转载于: http://www.cnblogs.com/huipengbo/p/6887170.html 一.本文以植物大战僵尸外挂的编写为例,介绍单机游戏外挂的编写和使用过程。 1.启动单机游戏如:植物大战僵尸如下图 2.想明白我们写外挂的目的:让我们有充足的阳光数量来使用&#x…

如何使用浏览器控制台通过JavaScript抓取并将数据保存在文件中

by Praveen Dubey通过Praveen Dubey 如何使用浏览器控制台通过JavaScript抓取并将数据保存在文件中 (How to use the browser console to scrape and save data in a file with JavaScript) A while back I had to crawl a site for links, and further use those page links …

poj2017

1.链接地址 https://vjudge.net/problem/POJ-2017 2.问题描述 Bill and Ted are taking a road trip. But the odometer in their car is broken, so they dont know how many miles they have driven. Fortunately, Bill has a working stopwatch, so t…

NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!...

资源匮乏原则: 有限的资源无法满足无穷的需要及欲望; 因此想要多一点的某件东西,意味着必须放弃一些其他的东西; 因为资源匮乏,所以我们必须做出选择。 NFL原则:没有免费午餐定理(No Free Lunch)是wolpert和…

巨无霸Win8PE X64服务器维护专用,【13年4月4日】维护版win8pe【32位+64位+纯64位】(支持BIOS+EFI)...

因为单独一个PE是不够用的,已经制作了合盘,可BIOS启动,也可EFI启动。详情移步》欢迎下载使用,觉得好的话,请回帖支持一下,您的支持,就是我的动力。。。。预祝大家新的一年合家欢乐!工…

linux子线程运行的函数_Linux中线程使用详解

4. 线程的属性前面还说到过线程创建的时候是有属性的,这个属性由一个线程属性对象来描述。线程属性对象由pthread_attr_init()接口初始化,并由pthread_attr_destory()来销毁,它们的完整定义是:int pthread_attr_init(pthread_attr…

数据源 连接oracle

https://blog.csdn.net/kk185800961/article/details/53065257 转载于:https://www.cnblogs.com/BelieveFish/p/11164009.html

leetcode 140. 单词拆分 II(记忆化)

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明: 分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 …

java mvp开发_如何从没有软件开发技能的想法变成现实的市场MVP?️?

java mvp开发by Mike Williams由Mike Williams 如何从没有软件开发技能的想法变成现实的市场MVP?️? (How to go from idea to live marketplace MVP with no software development skills ?️?) Online marketplaces such as Airbnb, Turo, Hipcamp,…

Convolutional neural networks for artistic style transfer

https://harishnarayanan.org/writing/artistic-style-transfer/ 转载于:https://www.cnblogs.com/guochen/p/6888478.html