**

一 单层单输出感知机梯度计算

**

单层感知机指的是输入有多个节点,输出只有一个节点.
其实质为二分类,即将样本的多个特征值作为输入,输出为二分类.
假设输入有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:单层感知机梯度计算相关推荐

  1. pytorch梯度下降函数_Pytorch学习笔记6:激活函数/单层感知机/梯度下降求最小值实例...

    #添加到学习笔记2末尾,直接运行.代码意义可以看注释. #需要import以下库 import torch import numpy as np from matplotlib import pypl ...

  2. 【TensorFlow2.0】(5) 数学计算、合并、分割

    各位同学好,今天和大家分享一下TensorFlow2.0中的数学运算方法.合并与分割.内容有: (1)基本运算:(2)矩阵相乘:(3)合并 tf.concat().tf.stack():(4)分割 t ...

  3. 【TensorFlow2.0】(4) 维度变换、广播

    各位同学好,今天我和大家分享一下TensorFlow2.0中有关数学计算的相关操作,主要内容有: (1) 改变维度:reshape():(2) 维度转置:transpose():(3) 增加维度:ex ...

  4. PyTorch教程(十):单层感知机以及梯度更新

    单层感知机模型 y=XW+by=∑xi∗wi+by = XW + b \\ y = \sum x_i*w_i+ b y=XW+by=∑xi​∗wi​+b 单层感知机模型的每一个输入节点xix_ixi​ ...

  5. Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数

    Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数 前言 变种实现 Transformers中的word_embeddings 代码修改 实验效果 ...

  6. tensorflow2.0 学习笔记:一、神经网络计算

    mooc课程Tensorflow2.0 笔记 人工智能三学派 行为主义:基于控制论,构建感知-动作控制系统(自适应控制系统) 符号主义:基于算数逻辑表达式,求解问题时先把问题描述为表达式,再求解表达式 ...

  7. 第3章(3.11~3.16节)模型细节/Kaggle实战【深度学习基础】--动手学深度学习【Tensorflow2.0版本】

    项目地址:https://github.com/TrickyGo/Dive-into-DL-TensorFlow2.0 UC 伯克利李沐的<动手学深度学习>开源书一经推出便广受好评.很多开 ...

  8. Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲

    Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲 返回目录 这个笔记现在是主要根据北京大学曹健老师的视频写的,这个视频超级棒,非常推荐. 第一讲 常用函数的使用(包含了很多琐碎的函 ...

  9. 第1章【深度学习简介】--动手学深度学习【Tensorflow2.0版本】

    项目地址:https://github.com/TrickyGo/Dive-into-DL-TensorFlow2.0 UC 伯克利李沐的<动手学深度学习>开源书一经推出便广受好评.很多开 ...

最新文章

  1. TabLayout 遇到那些坑 tab标签不显示问题
  2. 【对接】《前后端对接联调数据、调试接口过程乌龙大合集》
  3. 图解易经:一部终于可以读懂的易经 祖行 扫描版 陕西师范大学出版社
  4. linux系统重启网络delaying initialization错误的解决方法
  5. PAT甲级1025 PAT Ranking:[C++题解]排序、结构体、排名
  6. 统计输入字符串中英文单词的个数
  7. 蓝桥杯-5-1最小公倍数(java)
  8. sql2000 中 存储过程 相关
  9. 加强Eclipse代码自动提示的方法
  10. mybatis学习笔记-02-第一个mybatis程序
  11. 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项...
  12. cuteEditor6.0多语言版(集成lic文件)
  13. 第五和第六单元练习题
  14. 几种类型的db,以及最新的db排名,看一下
  15. Java性能优化全攻略
  16. 向量叉乘公式_大物学习笔记(公式总结)
  17. Lync部署之Lync Mobile服务器端的外网设置
  18. 计算机常见的三种bios,各种类型电脑进入BIOS方法汇总,包含中英文对照图表!...
  19. 【CTS2019】氪金手游(动态规划)
  20. MYSQL5.7(64位)安装包及安装步骤

热门文章

  1. JAVA多线程售票问题
  2. CentOS上使用sysstat做系统监控测试
  3. 初探 performance – 监控网页与程序性能
  4. CreateCompatibleDC用法[转]
  5. 简单实现系统托盘 - 回复 闪 的问题
  6. 本体学习的概念及目标
  7. lof、etf、qdii基金区别
  8. 从命令行接收多个数字,求和之后输出结果
  9. Git的使用的简单介绍
  10. 移动前端webApp开发点滴积累20140524