TensorFlow2.0:单层感知机梯度计算
**
一 单层单输出感知机梯度计算
**
单层感知机指的是输入有多个节点,输出只有一个节点.
其实质为二分类,即将样本的多个特征值作为输入,输出为二分类.
假设输入有5个样本,每个样本有3个特征参数,样本的标签值为[0,1,0,1,0].
那么x的维度为[5,3],y的维度为[5].
其中感知机参数设置为:w的维度为[3,1],b的维度为[3].
由于为单输出,因此输出层可以使用sigmoid激活函数,且在计算损失值时不需要进行one-hot操作.
import tensorflow as tfx = tf.Variable(tf.random.normal([5,3]))#5个样本,3个特征参数
y = tf.constant([0,1,0,1,0])#实际标签值
w = tf.Variable(tf.random.normal([3,1]))#3维将为1维
b = tf.Variable(tf.zeros([1]))with tf.GradientTape() as tape:logits = x@w + bout = tf.sigmoid(logits)loss = tf.reduce_mean(tf.losses.MSE(y,out))grads = tape.gradient(loss,[w,b])dw = grads[0]
db = grads[1]print('dw = ' + str(dw))
print('db = ' + str(db))
dw = tf.Tensor(
[[0.01667164][0.06867889][0.05850799]], shape=(3, 1), dtype=float32)
db = tf.Tensor([0.06933725], shape=(1,), dtype=float32)
**
二 单层多输出感知机梯度计算
**
多输出实际为多分类问题,如输出层为3个,是将输入的样本分类到3类中,其输出为分类到某一类中的概率,因此这个三个概率的和应该为1.
由于为多输出,则在输出层可以使用softmax激活函数,将所有的概率和置于1.并且在计算损失值时需要使用one-hot操作.
import tensorflow as tfx = tf.Variable(tf.random.normal([5,8]))#5个样本,8个特征参数
y = tf.constant([0,1,2,1,2])#实际标签值,3类
w = tf.Variable(tf.random.normal([8,3]))#8维将为3维
b = tf.Variable(tf.zeros([3]))with tf.GradientTape() as tape:logits = x@w + b#shape = [5,3]out = tf.nn.softmax(logits,axis=1)loss = tf.reduce_mean(tf.losses.MSE(tf.one_hot(y,depth=3),out))grads = tape.gradient(loss,[w,b])dw = grads[0]
db = grads[1]print('dw = ' + str(dw))
print('db = ' + str(db))
dw = tf.Tensor(
[[-0.01499876 0.03595395 -0.02095522][-0.0262058 0.05820055 -0.03199472][-0.02989329 0.01921684 0.01067643][ 0.02548018 -0.01658636 -0.00889381][ 0.00882134 0.0250744 -0.03389573][ 0.01041492 0.02402776 -0.03444269][-0.02089255 0.02251757 -0.00162502][-0.02010499 0.02840729 -0.00830231]], shape=(8, 3), dtype=float32)
db = tf.Tensor([-0.00130461 0.02544518 -0.02414053], shape=(3,), dtype=float32)
TensorFlow2.0:单层感知机梯度计算相关推荐
- pytorch梯度下降函数_Pytorch学习笔记6:激活函数/单层感知机/梯度下降求最小值实例...
#添加到学习笔记2末尾,直接运行.代码意义可以看注释. #需要import以下库 import torch import numpy as np from matplotlib import pypl ...
- 【TensorFlow2.0】(5) 数学计算、合并、分割
各位同学好,今天和大家分享一下TensorFlow2.0中的数学运算方法.合并与分割.内容有: (1)基本运算:(2)矩阵相乘:(3)合并 tf.concat().tf.stack():(4)分割 t ...
- 【TensorFlow2.0】(4) 维度变换、广播
各位同学好,今天我和大家分享一下TensorFlow2.0中有关数学计算的相关操作,主要内容有: (1) 改变维度:reshape():(2) 维度转置:transpose():(3) 增加维度:ex ...
- PyTorch教程(十):单层感知机以及梯度更新
单层感知机模型 y=XW+by=∑xi∗wi+by = XW + b \\ y = \sum x_i*w_i+ b y=XW+by=∑xi∗wi+b 单层感知机模型的每一个输入节点xix_ixi ...
- Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数
Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数 前言 变种实现 Transformers中的word_embeddings 代码修改 实验效果 ...
- tensorflow2.0 学习笔记:一、神经网络计算
mooc课程Tensorflow2.0 笔记 人工智能三学派 行为主义:基于控制论,构建感知-动作控制系统(自适应控制系统) 符号主义:基于算数逻辑表达式,求解问题时先把问题描述为表达式,再求解表达式 ...
- 第3章(3.11~3.16节)模型细节/Kaggle实战【深度学习基础】--动手学深度学习【Tensorflow2.0版本】
项目地址:https://github.com/TrickyGo/Dive-into-DL-TensorFlow2.0 UC 伯克利李沐的<动手学深度学习>开源书一经推出便广受好评.很多开 ...
- Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲
Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲 返回目录 这个笔记现在是主要根据北京大学曹健老师的视频写的,这个视频超级棒,非常推荐. 第一讲 常用函数的使用(包含了很多琐碎的函 ...
- 第1章【深度学习简介】--动手学深度学习【Tensorflow2.0版本】
项目地址:https://github.com/TrickyGo/Dive-into-DL-TensorFlow2.0 UC 伯克利李沐的<动手学深度学习>开源书一经推出便广受好评.很多开 ...
最新文章
- TabLayout 遇到那些坑 tab标签不显示问题
- 【对接】《前后端对接联调数据、调试接口过程乌龙大合集》
- 图解易经:一部终于可以读懂的易经 祖行 扫描版 陕西师范大学出版社
- linux系统重启网络delaying initialization错误的解决方法
- PAT甲级1025 PAT Ranking:[C++题解]排序、结构体、排名
- 统计输入字符串中英文单词的个数
- 蓝桥杯-5-1最小公倍数(java)
- sql2000 中 存储过程 相关
- 加强Eclipse代码自动提示的方法
- mybatis学习笔记-02-第一个mybatis程序
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项...
- cuteEditor6.0多语言版(集成lic文件)
- 第五和第六单元练习题
- 几种类型的db,以及最新的db排名,看一下
- Java性能优化全攻略
- 向量叉乘公式_大物学习笔记(公式总结)
- Lync部署之Lync Mobile服务器端的外网设置
- 计算机常见的三种bios,各种类型电脑进入BIOS方法汇总,包含中英文对照图表!...
- 【CTS2019】氪金手游(动态规划)
- MYSQL5.7(64位)安装包及安装步骤