深入理解 keras 中 Dense 层参数

2023-05-16

目录

  • 引言
  • 深入理解 Dense 层的用法
    • 查看参数
    • 输入尺寸
    • 输出尺寸
    • 示例:
    • 用法完整示例
      • 示例一: 最小网络
      • 示例二:多维度数据
      • 示例三:特殊情况,待讨论
  • 附录

引言

大家或许已经对深度学习不陌生了。不管是养家糊口工作还是科研学习早日毕业,为了生活,我们可能不得不去深入理解深度学习方面的知识。对于现成的深度学习框架,已经有很多教程,一般都是再强调用法,却很少有理论与实战结合的示例。
在此,我们将抛砖引玉,记录一些关于 keras 中 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)

Dense layer 就是常提到和用到的全连接层 。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)。

示例:

# 作为 Sequential 模型的第一层,需要指定输入维度。可以为 input_shape=(16,) 或者 input_dim=16,这两者是等价的。
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# 现在模型就会以尺寸为 (*, 16) 的数组作为输入,
# 其输出数组的尺寸为 (*, 32)

# 在第一层之后,就不再需要指定输入的尺寸了:
model.add(Dense(32))

用法完整示例

示例一: 最小网络

仅有一个参数

import keras
from keras.layers import Dense
model = keras.models.Sequential()
model.add(Dense(1, use_bias=False, input_shape=(1,), name='Dense_ly'))  # 仅有的1个权重在这里
model.compile(loss='mse', optimizer='adam')
# end

model.summary()  # 简单查看网络结构

# 画图查看网络结构
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
display(SVG(model_to_dot(model,show_shapes=True).create(prog='dot', format='svg')))

# 创建数据begin
import numpy as np
data_input = np.random.normal(size=1000000).reshape(-1,1)  # 训练数据
data_label = -(data_input)  # 数据标签
# end

print('模型随机权重分配为:%s\n' % (model.layers[0].get_weights()))  # 检查随机初始化的权重大小

model.fit(data_input, data_label)  # 对创建的数据用创建的网络进行训练

print('模型进行预测:%s\n' % (model.predict(np.array([2.5]))))  # 利用训练好的模型进行预测

print('训练完成后权重分配为:%s\n' % (model.layers[0].get_weights()))  # 再次查看训练好的模型中的权重值

示例一运行结果

示例二:多维度数据

多维数据训练,此处为2个变量

import keras
from keras.layers import Dense
model = keras.models.Sequential()
model.add(Dense(1, use_bias=False, input_shape=(2,), name='Dense_ly'))  # 仅有的1个权重在这里
model.compile(loss='mse', optimizer='adam')
# end

model.summary()  # 简单查看网络结构

# 画图查看网络结构
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
display(SVG(model_to_dot(model,show_shapes=True).create(prog='dot', format='svg')))

# 创建数据begin
import numpy as np
data_input = np.random.normal(size=1000000).reshape(-1,2)  # 训练数据
data_label = -(data_input[:,1])  # 数据标签。 PS:注意,这里变了。这里预测的标签仅仅是后一个维度的数据哦!
# end

print('模型随机权重分配为:%s\n' % (model.layers[0].get_weights()))  # 检查随机初始化的权重大小

model.fit(data_input, data_label)  # 对创建的数据用创建的网络进行训练

print('模型进行预测:%s\n' % (model.predict(np.array([[2.5, 13.5]]))))  # 利用训练好的模型进行预测。 PS:注意,这里变了

print('训练完成后权重分配为:%s\n' % (model.layers[0].get_weights()))  # 再次查看训练好的模型中的权重值

示例二

示例三:特殊情况,待讨论

这个参数是一个二位矩阵,先留待查看研习

import keras
from keras.layers import Dense
model = keras.models.Sequential()
model.add(Dense(2, use_bias=False, input_shape=(2,), name='Dense_ly'))  # 仅有的1个权重在这里
model.compile(loss='mse', optimizer='adam')
# end

model.summary()  # 简单查看网络结构

# 画图查看网络结构
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
display(SVG(model_to_dot(model,show_shapes=True).create(prog='dot', format='svg')))

# 创建数据begin
import numpy as np
data_input = np.random.normal(size=1000000).reshape(-1,2)  # 训练数据
data_label = -(data_input)  # 数据标签。 PS:注意,这里变了
# end

print('模型随机权重分配为:%s\n' % (model.layers[0].get_weights()))  # 检查随机初始化的权重大小

model.fit(data_input, data_label)  # 对创建的数据用创建的网络进行训练

print('模型进行预测:%s\n' % (model.predict(np.array([[2.5, 13.5]]))))  # 利用训练好的模型进行预测。 PS:注意,这里变了

print('训练完成后权重分配为:%s\n' % (model.layers[0].get_weights()))  # 再次查看训练好的模型中的权重值

示例三

附录

配合以下资源食用更香:

  • 面向初学者的最小神经网络

  • 理解1D、2D、3D卷积神经网络的概念

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解 keras 中 Dense 层参数 的相关文章

  • 查看磁盘分区UUID的四种方法

    查看磁盘分区 UUID 的四种方法 xff08 Helloblock 写作 xff09 1 使用 dev disk by uuid 目录 root 64 server ls l dev disk by uuid 总用量 0 lrwxrwxr
  • Lodash 核心 lodash

    baseCreate Object create ptoto propertiesObject 不能以名称而去定义该方法的作用 它并不只是为了创建一个对象 其可以理解为 34 创建一个继承了指定对象的对象 34 并且创建后的对象是不存在原型
  • MySql之索引

    索引 1 gt 什么是索引 xff1f 2 gt MySql的查询方式3 gt 索引的实现原理4 gt 索引应用在什么情况下5 gt 索引的创建 删除6 gt 索引的常见失败情况第一种情况即使添加了索引也不走索引的原因 第二种情况第三种情况
  • VNC远程管理配置

    其实配置VNC很简单 xff0c 只要运行vncserver就好了 运行完毕后 xff0c 它会在家目录生成 vnc目录 xff0c 里面最重要的一个文件是Xstartup 然后你可以使用vncviewer yourremotehost i
  • uCOS/FreeRTOS任务创建的两种模式

    在我们使用uCOS FreeRTOS编写代码时 xff0c 首先要面临的一个问题是怎样创建任务并启动整个系统 一般来说 xff0c 我们会有两种不同的方式 这两种方式不仅适用于uCOS FreeRTOS xff0c 同时也适用于其它RTOS
  • 树莓派 —— 配置Windows通过VNC连接树莓派

    VNC简介 VNC Virtual Network Console 是虚拟网络控制台的缩写 它 是一款优秀的远程控制工具软件 xff0c 由著名的 AT amp T 的欧洲研究实验室开发的 VNC 是在基于 UNIX 和 Linux 操作系
  • 测试UDP端口连通性

    测试UDP端口连通性 Linux使用netcat测试udp端口Centos7安装netcat 依赖epel源 netcat常用参数使用netcat创建TCP客户端和服务器使用netcat创建UDP客户端和服务器 windows使用netca
  • Centos7安装kvm服务器

    Centos7安装kvm服务器 什么是kvmvirt manager及相关软件简介virt manger架构及原理KVMQEMULibvirt 检查硬件是否支持kvm虚拟化启用嵌套虚拟化 可选 检查是否启用嵌套虚拟化热生效嵌套虚拟化 临时启
  • IP子网划分与计算

    IP地址分为5类 A类 xff1a 0 0 0 0 127 255 255 255 8bit B类 xff1a 128 0 0 0 191 255 255 255 16bit C类 xff1a 192 0 0 0 223 255 255 2
  • 透镜成像原理,眼球成像原理,小孔成像原理

    透镜成像规律总结 规律1 xff1a 当物距大于 2 倍 焦距 时 xff0c 则像距在1 倍焦距和 2 倍焦距之间 xff0c 成倒立 缩小的实像 此时像距小于物距 xff0c 像比物小 xff0c 物像异侧 应用 xff1a 照相机 摄
  • Ubuntu语言支持为灰色修复方法

    在Ubuntu12 04中 xff0c 在下不知为何将语言支持中应用到整个系统和添加语言这2个按弄成了灰色 xff0c 导致ibus 不能输入中文 xff0c 修复方法如下 xff1a 1 启动terminal xff0c 输入如下命令 x
  • torch中Tensor和numpy相互转化

    Numpy转为Tensor 使用torch from numpy 如 import torch B 61 torch from numpy A Tensor转为Numpy 使用data numpy 如 import torch C 61 B
  • LXD/LXC raw.idmap 使用方法和作用

    官方文档 xff1a https github com lxc lxd blob master doc userns idmap md 设置和取消设置 raw idmap xff0c 都需要重启容器才能应用 并且在重启容器时 xff0c 会
  • LXD/LXC 奇怪的重启断网问题解决。

    2023 4 10 日更新 搞 Debian 系统的 LXD 时 xff0c 发现了 Debian 对 lxd 的已知问题跟踪 似乎是 Docker 的原因 已知问题 跟踪链接 xff1a https wiki debian org LXD
  • SSH连接问题:连不上&不能免密登录

    一 连不上 ssh username 64 ip 报错 xff1a ssh connect to host lt ip4地址 gt port 22 Connection timed out 首先排查 xff0c 排查步骤 xff1a 1 p
  • Java经典面试题总结

    本文分为十九个模块 xff0c 分别是 xff1a Java 基础 容器 多线程 反射 对象拷贝 Java Web 异常 网络 设计模式 Spring Spring MVC Spring Boot Spring Cloud Hibernat
  • 单例模式常见场景

    单例模式 Singleton 也叫单态模式 xff0c 是设计模式中最为简单的一种模式 xff0c 甚至有些模式大师都不称其为模式 xff0c 称其为一种实现技巧 xff0c 因为设计模式讲究对象之间的关系的抽象 xff0c 而单例模式只有
  • Java 基础系列(十) --- 什么是向上转型和向下转型

    1 向上转型 1 1 为何叫向上转型 在面向对象程序设计中 针对一些复杂的场景 我们通常画一个UML图来表示各个类之间的关系 通常父类画在子类的上方 因此我们就称之为 34 向上转型 34 表示往父类的方向转 向上转型发生的时机 直接赋值
  • Python函数式编程——map()、reduce()

    原文链接 提起map和reduce想必大家并不陌生 xff0c Google公司2003年提出了一个名为MapReduce的编程模型 1 xff0c 用于处理大规模海量数据 xff0c 并在之后广泛的应用于Google的各项应用中 xff0
  • [Linux] CentOS8 升级

    A CentOS8 0升级到8 5的方法 由于CentOS8已经仅仅维护Stream xff0c 8 Linux都已经不在维护 对应仓库都清空了 不过有时候 xff0c 我们依然需要安装对应小版本 xff0c 比如8 5 这里摸索了一个更新

随机推荐

  • word 插入公式附加右侧编号方法

    主要添加编号的方法就是在公式后面 xff0c 添加 编号 xff0c 输入光标在公式的最后 xff0c 然后回车 效果如下 xff1a 需要注意的有两点 xff1a 1 必须要保证 不属于公式内部 xff08 如果不清楚如何保证 键属不属于
  • iscsiadm命令用法

    启动iscsi守护进程 span class token function service span iscsi start 发现目标 iscsiadm m discovery t sendtargets p 192 168 1 1 326
  • centOS7关闭防火墙

    查看防火墙状态 xff1a systemctl status firewalld service 如图 绿的running表示防火墙开启 执行关闭命令 xff1a systemctl stop firewalld service 再次执行查
  • Linux 包管理基础:apt、yum、dnf 和 pkg常用命令

    介绍 大多数现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件 软件通常都是存放在存储库中 xff0c 并通过包的形式进行分发 处理包的工作被称为包管理 包提供了操作系统的基本组件 xff0c 以及共享的库 应用程序 服
  • opensd开源啦 !这套自动化部署OpenStack工具你值得拥有

    2022年8月 xff0c 经openEuler开源社区技术委员会审议通过 xff0c 联通数科正式将opensd开源至openEuler开源社区 opensd是联通数科为解决OpenStack企业级部署的复杂性 xff0c 针对自身Ope
  • 边缘计算的解决方案大集合

    自今年2月的巴塞罗那世界移动通信大会召开以来 xff0c 边缘计算无疑是C位出道 xff0c 爆发释放在人们的视野中 xff0c 成为今年业界最热门的领域之一 顺着5G的东风 xff0c 边缘计算的诞生成为历史必然 xff0c 整个行业都在
  • 计网(笔记版)---外部网络路由协议之BGP协议

  • js中?. 、?? 、??=的用法及含义

    1 可选链运算符 是不是经常遇到这样的错误 TypeError Cannot read properties of null reading 39 xxx 39 引入可选链就是为了解决这个问题 const person 61 id 1 na
  • LXC与Docker介绍

    文章目录 LXCLUX是什么LXC常用命令LXC的使用 Docker容器虚拟化和传统虚拟化的区别Linux NamespacesCGroupsdoeker基本概念docker容器编排 LXC LUX是什么 LXC xff08 LinuX C
  • 树莓派使用CLASH的代理安装软件

    为什么要使用代理 github系列域名不能访问 xff0c curl一键安装用不了 打开CLASH允许局域网功能 树莓派终端登陆 方法一 xff1a 1 编辑 etc profile文件 sudo nano etc profile 2 在最
  • Linux下解决高并发socket最大连接数限制,tcp默认1024个连接

    linux获取TCP连接数 方法一 xff1a admin 64 zabbix ss ant awk 39 NR gt 1 a 1 43 43 END for b in a print b a b 39 ESTAB 535 TIME WAI
  • vncserver的详细配置

    原文地址 xff1a vncserver的详细配置 作者 xff1a OpenTech 1 首先要配置的是服务端 A 确认服务器端是否安装了vncserver 使用rpm qa vnc命令如果收到如下信息说明已经安装了vncserver x
  • Rman备份中常见的问题

    1 xff1a ORA 01031insufficient privileges gpasswd d oracle dba 将oracle移除出dba组 查看oracle属性 uid 61 500 oracle gid 61 500 oin
  • 弱监督学习-snorkel

    1 什么是弱监督学习 弱监督问题旨在研究通过较弱的监督信号来构建预测模型 xff0c 即在少量的标注样本上学习建模 xff0c 达到大量样本上同样的效果 弱监督学习主要分为三类 不确切监督 xff08 inexact supervision
  • 如何用3000元搞定一年100M点对点专线

    温馨提示 xff1a 阅读本文需要先阅读或温习格物资讯早先发布过的 奇葩物花生壳出品蒲公英VPN组网路由 2015年11月格物资讯发布了花生壳打洞路由器蒲公英的试用报告 xff0c 提到在鹏博士接入前提下 xff0c 做P2P组网实现快速的
  • PNETLAB中可以导入的交换机、防火墙等设备镜像

    在网上找了很久 xff0c 想要找到一个设备镜像的下载 xff0c 发现网上全都是一些对于PNET本体安装的炒冷饭 不过经过一个下午的寻找 xff0c 最终在B站一个UP 64 real半吊子工程师 22年的视频里找到了相关的下载平台连接
  • 在Keras中,TimeDistributed层的作用是什么?

    在Keras中 xff0c TimeDistributed层的作用是什么 xff1f 关键词 xff1a python xff0c machine learning xff0c keras xff0c neural network xff0
  • 理解1D、2D、3D卷积神经网络的概念

    目录 引言二维CNN Conv2D一维CNN Conv1D三维CNN Conv3D总结 引言 当我们说卷积神经网络 xff08 CNN xff09 时 xff0c 通常是指用于图像分类的二维CNN 但是 xff0c 现实世界中还使用了其他两
  • 解决vncserver看不到桌面的问题

    解决vncserver看不到桌面的问题 主要参考这里 xff1a http zhidao baidu com link url 61 7Btj0KsV5b986dydoOpElKDpSwriaruP4jxWY6f6pG3Ota kcQbdV
  • 深入理解 keras 中 Dense 层参数

    目录 引言深入理解 Dense 层的用法查看参数输入尺寸输出尺寸示例 xff1a 用法完整示例示例一 最小网络示例二 xff1a 多维度数据示例三 xff1a 特殊情况 xff0c 待讨论 附录 引言 大家或许已经对深度学习不陌生了 不管是