关于Keras Dense层整理
作者:姚贤贤 发布时间:2022-03-02 17:04:15
我就废话不多说了,大家还是直接看代码吧!
'''
Created on 2018-4-4
'''
keras.layers.core.Dense(
units, #代表该层的输出维度
activation=None, #激活函数.但是默认 liner
use_bias=True, #是否使用b
kernel_initializer='glorot_uniform', #初始化w权重,keras/initializers.py
bias_initializer='zeros', #初始化b权重
kernel_regularizer=None, #施加在权重w上的正则项,keras/regularizer.py
bias_regularizer=None, #施加在偏置向量b上的正则项
activity_regularizer=None, #施加在输出上的正则项
kernel_constraint=None, #施加在权重w上的约束项
bias_constraint=None #施加在偏置b上的约束项
)
# 所实现的运算是output = activation(dot(input, kernel)+bias)
# model.add(Dense(units=64, activation='relu', input_dim=784))
# keras初始化所有激活函数,activation:
# keras\activations.py
# keras\backend\cntk_backend.py
# import cntk as C
# 1.softmax:
# 对输入数据的最后一维进行softmax,一般用在输出层;
# ndim == 2,K.softmax(x),其实调用的是cntk,是一个模块;
# ndim >= 2,e = K.exp(x - K.max(x)),s = K.sum(e),return e / s
# 2.elu
# K.elu(x)
# 3.selu: 可伸缩的指数线性单元
# alpha = 1.6732632423543772848170429916717
# scale = 1.0507009873554804934193349852946
# return scale * K.elu(x, alpha)
# 4.softplus
# C.softplus(x)
# 5.softsign
# return x / (1 + C.abs(x))
# 6.relu
# def relu(x, alpha=0., max_value=None):
# if alpha != 0.:
# negative_part = C.relu(-x)
# x = C.relu(x)
# if max_value is not None:
# x = C.clip(x, 0.0, max_value)
# if alpha != 0.:
# x -= alpha * negative_part
# return x
# 7.tanh
# return C.tanh(x)
# 8.sigmoid
# return C.sigmoid(x)
# 9.hard_sigmoid
# x = (0.2 * x) + 0.5
# x = C.clip(x, 0.0, 1.0)
# return x
# 10.linear
# return x
# keras初始化所有方法,initializer:
# Zeros
# Ones
# Constant(固定一个值)
# RandomNormal(正态分布)
# RandomUniform(均匀分布)
# TruncatedNormal(截尾高斯分布,神经网络权重和滤波器的推荐初始化方法)
# VarianceScaling(该初始化方法能够自适应目标张量的shape)
# Orthogonal(随机正交矩阵初始化)
# Identiy(单位矩阵初始化,仅适用于2D方阵)
# lecun_uniform(LeCun均匀分布初始化)
# lecun_normal(LeCun正态分布初始化)
# glorot_normal(Glorot正态分布初始化)
# glorot_uniform(Glorot均匀分布初始化)
# he_normal(He正态分布初始化)
# he_uniform(He均匀分布初始化,Keras中文文档写错了)
# keras正则化,regularizer:
# import backend as K
# L1: regularization += K.sum(self.l1 * K.abs(x))
# L2: regularization += K.sum(self.l2 * K.square(x))
补充知识:keras.layers.Dense()方法及其参数
一、Dense层
keras.layers.Dense(units,
activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None)
二、参数
units: 神经元节点数数,鸡输出空间维度。
activation: 激活函数,若不指定,则不使用激活函数 (即线性激活: a(x) = x)。
use_bias: 布尔值,该层是否使用偏置向量。
kernel_initializer: kernel 权值矩阵的初始化器
bias_initializer: 偏置向量的初始化器
kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数
bias_regularizer: 运用到偏置向的的正则化函数
activity_regularizer: 运用到层的输出的正则化函数 (它的 “activation”)。
kernel_constraint: 运用到 kernel 权值矩阵的约束函数
bias_constraint: 运用到偏置向量的约束函数
三、示例
例1:
from keras.layers import Dense
# 作为 Sequential 模型的第一层
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# 现在模型就会以尺寸为 (*, 16) 的数组作为输入,
# 其输出数组的尺寸为 (*, 32)
# 在第一层之后,你就不再需要指定输入的尺寸了:
model.add(Dense(32))
注意在Sequential模型的第一层要定义Dense层的形状,此处定义为input_shape=(16,)
例2:
from keras.layers import Dense
model = Sequential()
model.add(Dense(512, activation= 'sigmoid', input_dim= 2, use_bias= True))
这里定义了一个有512个神经元节点,使用sigmoid激活函数的神经层,此时输入形状参数为input_dim,注意它与input_shape参数的区别。
input_shape:即张量的形状,从前往后对应由外向内的维度
例
[[1],[2],[3]] 这个张量的shape为(3,1)
[[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]这个张量的shape为(3,2,2),
[1,2,3,4]这个张量的shape为(4,)
input_dim:代表张量的维度,之前3个例子的input_dim分别为2,3,1。
常见的一种用法:只提供了input_dim=32,说明输入是一个32维的向量,相当于一个一阶、拥有32个元素的张量,它的shape就是(32,)。因此,input_shape=(32, )
四、总结
本文对Dense()方法及其参数做了详细的介绍,并对其用法进行了大概的讲解,有什么问题可以评论区留言或者联系我,我会及时解答。希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/u011311291/article/details/79820073
猜你喜欢
- 关于投票系统怎么样怎么样的引言就不多说,这不是毕业设计,主要说一下使用php实现投票系统,与其他普通系统一样,分为两部分,一个是管理员部分,
- 在网页设计发展到一定阶段的时候就必然会和其他学科或领域只是产生交汇和共鸣,在阅读《超越CSS:web设计艺术精髓》这本书的时候,发现原来we
- 考虑以下python程序:#!/usr/bin/env pythonimport syssys.stdout.write("std
- 收集和分发数据是网络管理的职责之一,而且必须确保这些数据的准确性和安全性。不管它们是什么操作系统,数据库服务器需要特殊的管理以保证操作上的安
- python新手一枚,操作系统Win10 64 bit,Python版本,3.7因为某个脚本需要用到win32con 和win32api模块
- 加强ASP网站后台安全一些主要措施:----------------------------------------------------
- 列表对象pop()方法的使用pop() 方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。语法:verse.pop(in
- 目录1. pgzeropgzero的安装2. 游戏设计的过程3. pgzero基础4. pgzero游戏例子5. 总结6. 参考资料1. p
- 我使用Pytorch进行模型训练时发现真正模型本身对于显存的占用并不明显,但是对应的转换为tensorflow后(权重也进行了转换),发现P
- 所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事。异常的处理是跨越编程语言的,和具体的编程细节相比
- 在数据库开发方面,通过单表所表现的实现,有时候需要组合查询来找到我们需要的记录集,这时候我们就会用到连接查询。连接查询主要包括以下几个方面:
- 什么是python的装饰器?网络上的定义:装饰器就是一函数,用来包装函数的函数,用来修饰原函数,将其重新赋值给原来的标识符,并永久的丧失原函
- 在对dataframe进行分析的时候会遇到需要分组计数,计数的column中属性有重复,但又需要仅对不重复的项计数(即重复N次出现的项只计1
- 引言通过前面的文章我们已经了解到OpenCV 是一个用于计算机视觉和机器学习的开源 python 库。它主要针对实时计算机视觉和图像处理。它
- 问题描述 windows错误安装方法:pip3 install numpy这种情况下虽然安装成功,但是在import numpy时会出现如下
- 要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头:Set-Cookie:session=8345
- 导言:在前面的教程我们阐述了应用程序处理二进制数据的2种模式,以及使用FileUpload 控件从浏览器向服务器文件系统上传文件。当文件上传
- DataLoaderDataset不能满足需求需自定义继承torch.utils.data.Dataset时需要override __ini
- PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的
- 一个随机排列元素的方法, 其实之前是在摄影页面写的一个小效果.查看演示: 点此查看DEMO实现方法利用Math.random()产生随机数,