Tensorflow与循环神经网络
使用Tensorflow实现循环神经网络的相关算法
序列的表示方法
Embedding 层
在神经网络中,单词的表示向量可以直接通过训练的方式得到,我们把单词的表示层 叫作 Embedding 层。
Embedding 层实现起来非常简单,构建一个 shape 为[𝑁vocab, 𝑛]的查询表对象 table,对于任意的单词编号𝑖,只需要查询到对应位置上的向量并返回即可:𝒗 = 𝑡𝑎𝑏𝑙𝑒[𝑖]
Embedding 层是可训练的,它可放置在神经网络之前,完成单词到向量的转换,得到的表 示向量可以继续通过神经网络完成后续任务,并计算误差L,采用梯度下降算法来实现端 到端(end-to-end)的训练。
在 TensorFlow 中,可以通过 layers.Embedding(𝑁vocab,𝑛)来定义一个 Word Embedding 层,其中𝑁vocab参数指定词汇数量,𝑛指定单词向量的长度
x = tf.range(10) # 生成 10 个单词的数字编码x = tf.random.shuffle(x) # 打散# 创建共 10 个单词,每个单词用 ...
Tensorflow与卷积神经网络
使用Tensorflow实现卷积神经网络的相关算法
卷积层的实现
自定义权值
在 TensorFlow 中,通过 tf.nn.conv2d 函数可以方便地实现 2D 卷积运算。tf.nn.conv2d 基于输入𝑿: [b.h,𝑤,𝑐𝑖𝑛] 和卷积核𝑾: [𝑘 𝑘 𝑐𝑖𝑛 𝑐𝑜𝑢𝑡] 进行卷积运算,得到输出𝑶 :[b,h′,𝑤′,𝑐𝑜𝑢𝑡] ,其中𝑐𝑖𝑛表示输入通道数,𝑐𝑜𝑢𝑡表示卷积核的数量,也是输出特征图的通道数。
x = tf.random.normal([2,5,5,3]) # 模拟输入,3通道,高宽为5 # 需要根据[k,k,cin,cout]格式创建W张量,4个3x3大小卷积核w = tf.random.normal([3,3,3,4])# 步长为1, padding为0,out = tf.nn.conv2d(x,w,strides=1,padding=[[0,0],[0,0],[0,0],[0,0]])
其中 padding 参数的设置格式为:padding=[[0,0],[上,下],[左,右],[0,0] ...
Tensorflow中Keras 高层接口
TensorFlow中的子模块 tf.keras中快速构建神经网络的高层接口
常见功能模块
Keras 提供了一系列高层的神经网络相关类和函数,如经典数据集加载函数、网络层类、模型容器、损失函数类、优化器类、经典模型类。
常见网络层类
对于常见的神经网络层,可以使用张量方式的底层接口函数来实现,这些接口函数一 般在 tf.nn 模块中
对于常见的网络层,我们一般直接使用层方式来完成模型的 搭建,在 tf.keras.layers 命名空间中提供了大量常见网络层的类,如全连接层、激活函数层、池化层、卷积层、循环神经网络层。
例如以 Softmax 层为例,它既可以使用 tf.nn.softmax 函数在前向传播逻辑中完成 Softmax 运算,也可以通过 layers.Softmax(axis)类搭建 Softmax 网络层
import tensorflow as tf# 导入keras模型,不能使用import keras,它导入的是标准的Keras库 from tensorflow import kerasfrom tensorflow.keras import laye ...
Tensorflow构建简单神经网络
使用Tensorflow2.0构建简单的神经网络
全连接层
𝑾矩阵叫做全连接层的权值矩阵,𝒃向量叫做全连接层的偏置向量
张量方式实现
定义好权值张量𝑾和偏置张量𝒃,并利用 TensorFlow 提供的批量矩阵相乘函数 tf.matmul()即可完成网络层的计算。
# 创建W,b张量x = tf.random.normal([2,784])w1 = tf.Variable(tf.random.truncated_normal([784, 256], stddev=0.1)) b1 = tf.Variable(tf.zeros([256]))o1 = tf.matmul(x,w1) + b1 # 线性变换o1 = tf.nn.relu(o1) # 激活函数<tf.Tensor: id=31, shape=(2, 256), dtype=float32, numpy= array([[ 1.51279330e+00, 2.36286330e+00, 8.16453278e-01,1.80338228e+00, 4.58602428e+00, 2.54454136e+ ...
Tensorflow2.0进阶知识
Tensorflow2.0的进阶知识
合并与分割
合并
张量的合并可以使用拼接(Concatenate)和堆叠(Stack)操作实现,拼接操作并不会产生新 的维度,仅在现有的维度上合并,而堆叠会创建新维度。
拼接,通过 tf.concat(tensors, axis)函数拼接张量,其中参数 tensors 保存了所有需要合并的张量 List,axis 参数指定需要合并的维度索引
a = tf.random.normal([10,35,4])b = tf.random.normal([10,35,4]) tf.concat([a,b],axis=2) # 在第三个维度上拼接
<tf.Tensor: id=28, shape=(10, 35, 8), dtype=float32, numpy= array([[[-5.13509691e-01, -1.79707789e+00, 6.50747120e-01, ...,2.58447856e-01, 8.47878829e-02, 4.13468748e-01], [-1.17108583e+00, 1.93961406e+ ...
Tensorflow2.0基础知识
TensorFlow 是一个面向深度学习算法的科学计算库,内部数据保存在张量(Tensor)对象 上,所有的运算操作(Operation,简称 OP)也都是基于张量对象进行的。这里介绍Tensorflow2.0的基础操作方法。
数据类型
TensorFlow 中的基本数据类型,包含数值类型、字符串类型和布尔类型。
数值类型
标量(Scalar) ,单个的实数,如 1.2, 3.4 等,维度(Dimension)数为 0,shape 为[]。;
# python 语言方式创建标量a = 1.2 # TF 方式创建标量aa = tf.constant(1.2)type(a), type(aa), tf.is_tensor(aa)
(float, tensorflow.python.framework.ops.EagerTensor, True)
向量(Vector) ,𝑛个实数的有序集合,通过中括号包裹,如[1.2],[1.2,3.4]等,维度数 为 1,长度不定,shape 为[𝑛];
# 创建 3 个元素的向量a = tf.constant([1,2, 3.])a, ...
神经网络和深度学习(Neural Networks and Deep Learning) 第一周 深度学习引言(Introduction to Deep Learning)
吴恩达老师深度学习公开课第一门课————神经网络和深度学习(Neural Networks and Deep Learning)
第三周:浅层神经网络(Shallow neural networks)笔记
3.1 神经网络概述(Neural Network Overview)
神经网络模型
3.2 神经网络的表示(Neural Network Representation)
神经网络的含义
(1)输入层:输入特征x1、x2、x3,它们被竖直地堆叠起来
(2)隐藏层:中间的层次,由于中间结点的准确值我们是不知道到的,也就是说你看不见它们在训练集中应具有的值。你能看见输入的值,你也能看见输出的值,但是隐藏层中的东西,在训练集中你是无法看到的。
(3)输出层:负责产生预测值,是神经网络的最后一层。
3.3 计算一个神经网络的输出(Computing a Neural Network’s output)
神经网络的含义
3.4 多样本向量化(Vectorizing across multiple examples)
3.5 向量化实现的解释(Just ...
第二周:神经网络的编程基础(Basics of Neural Network programming)
吴恩达老师深度学习公开课第一门课————神经网络和深度学习(Neural Networks and Deep Learning)
第二周:神经网络的编程基础(Basics of Neural Network programming)
2.1 二分类(Binary Classification)
前向传播(forward propagation)和反向传播(backward propagation)
二分类(binary classification)
典型算法————逻辑回归
以图片的识别举例,辨别一张图片的内容是否是一只猫。就是将图片的RGB特征提取出来,变成特征向量x,如果图片的像素为6464,那么RGB每个通道都有6464位,则向量x的总维度为64643。现在我们用nx=12288来表示输入特征向量的维度,有时候为了简洁,我会直接用小写的n来表示输入特征向量的维度。
二分类问题就是习得一个分类器,它以图片的特征向量x作为输入,然后预测输出结果为1还是0,也就是预测图片中是否有猫。
2.2 逻辑回归(Logistic Regression)
(1)给定一个输入特征向量X ...
神经网络和深度学习(Neural Networks and Deep Learning) 第一周 深度学习引言(Introduction to Deep Learning)
吴恩达老师深度学习公开课第一门课————神经网络和深度学习(Neural Networks and Deep Learning)
第一周 深度学习引言(Introduction to Deep Learning)笔记
1.2 什么是神经网络?(What is a Neural Network)
简单的神经网络:x作为输入,通过一个节点(一个单独的神经元),最终输出了y.
从趋近于零开始,然后变成一条直线。这个函数被称作ReLU激活函数,它的全称是Rectified Linear Unit。rectify(修正)可以理解成max(0,x).
起始是样本的每一个特征(x1,x2,x3,x4),通过输入x,神经网络可以得到输出y。样本的特征会以不同的权重,传递给中间的隐藏节点,然后获得一个或多个输出y,在这个例子中就是预测的价格。如果有足够的训练样本,神经网络非常擅长计算从到的精准映射函数。
1.3 神经网络的监督学习(Supervised Learning with Neural Networks)
监督学习让神经网络创造了很大的价值
(1)在线广告投放(通过在网站上输入一个广 ...
神经网络和深度学习(Neural Networks and Deep Learning) 第四周:深层神经网络(Deep Neural Networks)
吴恩达老师深度学习公开课第一门课————神经网络和深度学习(Neural Networks and Deep Learning)
第四周:深层神经网络(Deep Neural Networks)笔记
4.1 深层神经网络(Deep L-layer neural network)
4.2 前向传播和反向传播(Forward and backward propagation)
前向传播
反向传播