![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tensorflow
刘星星儿
怕什么真理无穷,进一步有一步的欢喜。
展开
-
One-Hot Encoding(独热编码)通俗理解
由来机器学习任务中,特征有连续的值和分类的值;所以我们进行预处理时,对离散特征的编码分为了以下两种情况:1.像color[red,black,blue]这样离散特征的取值之间没有大小的意义,就可以使用one-hot编码;2.像size[S,M,L,XL]这样离散特征的取值有大小的意义,就直接使用数值的映射{S:1,M:2,L:3,XL:4}.这里借用一个比较常用的例子:考虑三个特征:[“male”, “female”][“from Europe”, “from US”, “from A原创 2020-11-19 20:12:47 · 1654 阅读 · 2 评论 -
Tensorflow学习笔记----生成对抗网络GAN原理及实现
生成对抗网络(Generative Adversarial Networks,GAN) 是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。生成对抗网络模型主要包括两部分:生成模型(Generator) 和 判别模型(Discriminator) 。生成模型是指我们可以根据任务、通过模型训练由输入的数据生成文字、图像、视频等数据。下图为一个典型的生成对抗网络,输入就是一副图像,会存在两个数据集,一个是真实数据集,另一个是生成模型造出来的;判别模型判断并输出就是一个概率值,用于判断真假使.原创 2020-08-25 17:28:47 · 644 阅读 · 0 评论 -
Tensorflow学习笔记----Auto-Encoders自动编码器原理及代码实现
这里写自定义目录标题有监督无监督Auto-Encoders概念Auto-Encoders变种:Denoising AutoEncoders(去噪AutoEncoders)Dropout AutoEncodersAdversarial AutoEncoders(对抗 AutoEncoders)Auto-Encoders代码实现有监督无监督我们在之前所学习的模型大多都是有监督学习,而Auto-Encoders是无监督的,我们先来理解有监督、无监督的概念。有监督学习(Supervised Learnin原创 2020-08-24 19:58:09 · 1048 阅读 · 0 评论 -
Tensorflow学习笔记----循环神经网络RNN原理及实现
循环神经网络(Recurrent Neural Network,RNN) 是一类具有短期记忆能力的神经网络,在循环神经网络中,神经元不仅可以接受其他神经元的信息,还可以接受自身的信息,形成一个环路结构。在很多现实任务中,网络的输出不仅和当前的输入有关,也和过去一段时间的输出相关。从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面结点的输出。即:循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。常用于文本填充、时间序列、语音识别等序列原创 2020-08-23 14:27:06 · 384 阅读 · 0 评论 -
Tensorflow学习笔记----ResNet原理及实战
ResNet深度残差网络:我们之前学的所有网络似乎都有预示着更高的网络层数就会有更加好的训练和预测,但后来人们发现,网络的加深会造成梯度爆炸和梯度弥散、性能下降问题,为了解决这个问题,所以提出了ResNet。它的基本单元组成如下:假定某段神经网络的输入是x,期望输出是H(x),即H(x)是期望的复杂潜在映射;我们需要使输入x近似于输出H(x),以保持在后面的层次中不会造成精度下降。在上图的残差网络结构图中,通过“shortcut connections(捷径连接)”的方式,直接把输入x传到输出作为初原创 2020-08-22 21:21:00 · 642 阅读 · 0 评论 -
Tensorflow学习笔记----CIFAR100实战
本文主要是对cifar100数据集进行训练的实战。流程:Load Datasets -> Build Network -> Train -> Test使用十三层的网络结构进行训练:这里的十三层是由十层卷积层与三层全连接层组成的,代码如下所示:import tensorflow as tffrom tensorflow.keras import layers, optimizers, datasets, Sequentialimport osos.environ原创 2020-08-21 20:27:21 · 1093 阅读 · 0 评论 -
Tensorflow学习笔记----卷积神经网络(Convolutional Neural Network,CNN)
对于很多数据,一般的全连接层网络很难解决复杂的图片数据问题,存在着很多内存占用和计算能力的问题无法解决。而卷积神经网络是一种具有局部连接,权重共享等特性的深层前馈神经网络,卷积过程就是kernel 所有权重与其在输入图像上对应元素亮度之和。一般是由卷积层,汇聚层,全连接层交叉堆叠而成,使用反向传播算法进行训练。其有三个结构上的特征:局部连接,权重共享以及汇聚。这些特征使得卷积神经网络具有一定程度上的平移,缩放和旋转不变性。较前馈神经网络而言,其参数更少。这里的局部连接是相对于全连接来说的,全连原创 2020-08-20 21:33:13 · 388 阅读 · 0 评论 -
Tensorflow笔记----自定义网络、模型保存与加载
一.自定义网络(CustomNetwork)通过自定义的网络我们可以将一些现有的网络和我们自己的网络串联起来,从而实现各种高效的网络。Keras.Sequential:可以将现有的层跟我们自己的层串联在一起,也可以很方便的组织层的参数;不过我们要使用Sequential需要准守一些协议:1.我们自定义的层必须继承自Keras.layers.Layer;2.我们自己的模型需要继承自Keras.Model;model = Sequential([ #五层的网络的一个容器 layers原创 2020-08-20 21:03:09 · 1276 阅读 · 0 评论 -
Tensorflow学习笔记----Keras自定义网络实战
在之前,我们已经学习了Keras高层接口的应用,主要是compile()和fit()函数,前者装配模型,后者控制训练流程,十分的方便;networks.compile(optimizers = optimizers.Adam(lr=0.01),#定义优化器 loss = tf.losses.CategoricalCrossentropy(from_logits=True), #指定Loss metrics = ['accuracy'] #原创 2020-08-19 18:12:33 · 438 阅读 · 0 评论 -
Tensorflow学习笔记----Himmelblau函数优化、TensorBoard可视化、Keras高层接口
一.Himmelblau函数优化(FunctionOptimization)此函数为:图像如下所示:图上四个蓝点的最小值都是0(z轴,即函数值),分别为f(3.0,2.0)=0.0、f(-2.805,3.131)=0.0、f(-3.779,-3.283)=0.0、f(3.584,-1.848)=0.0;分别位于x-y平面的第一、二、三、四象限;我们先来自己画出这个函数图像:import tensorflow as tfimport numpy as npimport matplotlib.p原创 2020-08-19 17:59:59 · 494 阅读 · 0 评论 -
Tensorflow学习笔记----TensorBoard数据可视化安装与使用
安装:一般情况下现在的Tensorflow里是自动安装了Tensorboard的,可以直接使用,如果没有的话,就直接在命令行中输入activate tensorflow进入tensorflow环境,再输入pip install tensorboard安装即可;打开:运用一个生成可视化的py文件,在文件同目录下生成了一个log文件后,在这个目录进入命令行,输入tensorboard --logdir=logs,命令行会生成一个地址,直接进入就是tensorboard的界面啦,一般情况下这个地址是本机地址+6原创 2020-08-18 21:18:43 · 362 阅读 · 0 评论 -
Tensorflow学习笔记----FashionMnist线性层实战
之前我们有张量基础上对mnist手写数字集进行处理,现在我们要在“层”的基础上对FashionMnist进行处理。这样的话比起张量层要方便许多,对于“层”的方面,我们只需要使用layers.Dense()来进行封装五层网络从而降维,而不需要使用张量中的out = relu{relu{relu[X@W1+b1]@W2+b2}@W3+b3} ;此外求解梯度也会简单许多。在这里附上张量实现的连接:https://blog.csdn.net/weixin_43580130/article/details/10原创 2020-08-17 21:44:46 · 297 阅读 · 0 评论 -
Tensorflow学习笔记----损失函数、链式法则、反向传播
一.损失函数(LossFunction)MSE:loss = 1/NΣ( y - out )2#MSEy = tf.constant([1,2,3,0,2])y = tf.one_hot(y,depth=4)#独热编码指的是在分类问题中,将存在数据类别的那一类用X表示,不存在的用Y表示,这里的X常常是1, Y常常是0。y = tf.cast(y,dtype = tf.float32)out = tf.random.normal([5,4])#以下三种方式是求loss的不同方式print("原创 2020-08-17 16:03:12 · 687 阅读 · 0 评论 -
Tensorflow学习笔记----梯度下降
目录一.梯度(Gradient)的理解:二.激活函数(Activation Function)及其梯度:三.损失(Loss)函数及其梯度四.单输出感知机及其梯度五.多输出感知机及其梯度一.梯度(Gradient)的理解:导数:一维函数沿x轴的变动率;偏微分:二维函数沿各个方向的变动率;梯度:三维及以上函数沿各个方向的变动率,当函数沿某一方向的值突然变动很大时,它在这个方向的此数梯度就会大;可以利用梯度来寻找函数的最小值,即寻找全局最优,方法就是从任一点出发,然后重复朝着梯度的反方向(变小的方向原创 2020-08-15 21:36:39 · 337 阅读 · 0 评论 -
Tensorflow笔记----数据集加载、全连接层、输出方式
一.数据加载(DataLoading)Kreas.datasets:tensorflow提供的常用小型数据集;Tf.data.Dataset.from_tensor_slices:将数据变为tensor类型加载到内存中;from tensorflow.keras import datasets#mnist手写数字集(x,y),(x_test,y_test) = datasets.mnist.load_data() #(x,y)为训练集,(x_test,y_test)为测试集print("x原创 2020-08-14 20:15:52 · 560 阅读 · 0 评论 -
Tensorflow笔记----填充复制、数据限幅、高阶操作
一.填充与复制(FillAndCopy)tf.pad(a,[[x,y],[m,n]]):填充(一般值为0),在a上面和下面分别填充x行和y行,左边和右边分别填充m列和n列可用于处理图像和文字,填充使格式整齐方便处理;a = tf.reshape(tf.range(9),[3,3])print(a)# tf.Tensor(# [[0 1 2]# [3 4 5]# [6 7 8]], shape=(3, 3), dtype=int32)print(tf.pad(a,[[1,0],[0,1]]原创 2020-08-14 19:43:35 · 333 阅读 · 0 评论 -
Tensorflow学习笔记----合并分割、数据统计、张量排序
一.合并与分割(MergeAndSplit)这里的合并于分割是基于张量提出的,所以我们要先理解一下张量是什么意思:张量:几何代数中的张量是基于向量和矩阵的推广,通俗一点理解,我们可以将标量视为零阶张量,矢量视为一阶张量,矩阵就是二阶张量。也就是说,我们可以将张量理解为n维数组。在Tensorflow中,张量其实就是tensor。0维张量/标量:标量是一个数字1维张量/向量:1维张量称为“向量”。2维张量:2维张量称为矩阵3维张量:公用数据存储在张量,如:文本数据、彩色图片(RGB)张量合并原创 2020-08-13 20:30:58 · 461 阅读 · 0 评论 -
Tensorflow学习笔记----维度变换、broadcasting、数学运算
一.维度变换**tf.reshape(a,[……]):**可以重新定义元素的shape以便数据被更好的利用#要保证reshape中[]中的所有值之积 = a的各维的数之积a = tf.random.normal([4,28,28,3])print(tf.reshape(a,[4,784,3]).shape) #out:(4,784,3),4*28*28*3 = 4*784*3print(tf.reshape(a,[4,-1,3]).shape) #out:(4,784,3),这里-1相原创 2020-08-12 21:01:06 · 291 阅读 · 0 评论 -
对于张量的通俗理解(Tensorflow中)
Tensorflow中,我们时常会提到张量,以下为Tensorflow中张量的通俗理解。张量:几何代数中的张量是基于向量和矩阵的推广,通俗一点理解,我们可以将标量视为零阶张量,矢量视为一阶张量,矩阵就是二阶张量。也就是说,我们可以将张量理解为n维数组。在Tensorflow中,张量其实就是tensor。0维张量/标量:标量是一个数字1维张量/向量:1维张量称为“向量”。2维张量:2维张量称为矩阵3维张量:公用数据存储在张量,如:mnist手写数字集中一张图片的表示为[28,28,3]...原创 2020-08-12 17:11:12 · 424 阅读 · 0 评论 -
Tensorflow学习笔记----前向传播实战(MNIST手写数字集)
在TensorFlow中,可以通过矩阵乘法的方法,实现神经网络的前向传播过程。a = tf.nn.relu(tf.matmul(x, w1)+b1)y = tf.nn.relu(tf.matmul(a, w2)+b2)在上面的代码中并没有定义w1、w2、b1、b2,TensorFlow可以通过变量(tf.Variable),来保存和更新神经网络中的参数。比如通过下面语句可以定义w1:weights = tf.Variable(tf.random_normal([2, 3], stddev=2))这原创 2020-08-12 16:40:23 · 349 阅读 · 0 评论 -
Tensorflow学习笔记----数据类型、创建tensor、索引切片
一.数据类型List:对于list里面的数据没有类型限制,如[1 , 1.2 , ’hello’ , …]np.array:能够很方便的存储大量数据的图片数据,不过不支持gpu计算、自动求导等。tf.Tensor:没有上述两种的缺点。Tensor(广泛的概念):Scalar:标量,如1.1,是0维的数据,Dim=0Vector:向量,如[1.1] , [1.1,2.2,…],是一维的,Dim=1Matrix:矩阵,如[[1.1,2.2],[3.3,4.4],[5.5,6.6]]是一个2×3的原创 2020-08-11 17:19:05 · 394 阅读 · 0 评论 -
Tensorflow2.0安装教程(CPU版本,windows环境)
首先我们需要安装Anaconda,这是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,下载文件是比较大的,要有一些耐心。这里推荐参考这个博客来安装Anaconda:https://blog.csdn.net/weixin_43715458/article/details/100096496具体不做赘述。Anaconda安装完成后,我们就可以来安装Tensorflow了,由于Tensorflow的GPU版本需要有nvidia显卡,而我没有n卡,所以在这里只能原创 2020-08-08 20:43:44 · 6264 阅读 · 0 评论