tensorflow
文章平均质量分 60
无
哈工程第一亚索
哈工程电子信息专业在读硕士
展开
-
基于tensorflow2的手写数字识别
实现思路导入所需要的包下载/加载数据集(此处用的是Mnist)数据集预处理(转化为张量,one-hot编码,分配batch大小,)设置网络结构(层数,激活函数,层与层之间的连接方法)采用随机梯度下降优化参数最小化(梯度下降)损失函数(MSE),并将更新的参数代替原来的参数进行多次训练代码# 避免tf打印过多东西import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'# 导入手写数字识别所选要的库(layers层连接,optimizers原创 2021-07-09 10:11:28 · 375 阅读 · 0 评论 -
基于numpy的线性回归模型
实现思路导入numpy包构建线性回归损失函数模型计算损失函数的梯度,并按梯度下降方法(最小化损失函数)更新参数设置初始化参数,并按3中的方法更新参数代码# 导入numpy包import numpy as np# 采用线性回归模型# 计算损失函数def compute_loss(w, b, points): loss = 0 for i in range(0, len(points)): x = points[i, 0] y = po原创 2021-07-09 10:25:12 · 499 阅读 · 0 评论 -
TensorFlow 2数据类型
常见数据载体(Python)list:在一个list中可以添加任何类型的数据,如整型,浮点型,字符串,元组,类的对象等。但对于数据量较大的情况,读写效率低,占用内存大。np.array:解决同类型数据运算,不支持GPUtf.Tensor:TensorFlow专用的数据载体,与np.array类似,且支持GPU计算,支持自动求导等功能。Tensor标量(scalar):零维的数据,如1.1向量(vector):一维的数据,如[1.1]和[1.1,1.2,1.3]都是向量(一维)矩阵(mat原创 2021-07-15 11:13:04 · 312 阅读 · 0 评论 -
Tensor的创建
Tensor的创建方法从numpy或list直接转换为tensor:numpy中为具体的数据直接创建一个tensor(初始化为全1或0):tf‘.zeros中为创建的tensor的shapetf.zeros_like()函数:用于创建一个与另一个tensor的shape相同的tensor,与tf.zeros(a.shape)作用相同对于初始化全部为1:将tf.zeros替换为tf.ones即可对于初始化任意数值(需要自行设定数值,且初始化都为这个数值):用fill函数即可实现直原创 2021-07-15 21:51:49 · 2222 阅读 · 0 评论 -
tensor的索引和切片
tensor的索引方法直接按照idx索引:即根据下标索引对应元素基于numpy风格的索引:用逗号隔开的方式来代替一个一个[ ]tensor的切片方法原创 2021-08-07 17:28:11 · 2021 阅读 · 0 评论 -
tf的维度变换
维度变换的意义维度变换的物理意义:用于将数据转换为另一种理解方式,如有4张28x28的图片RGB三通道,初始数据维度为[4,28,28,3],是按行和列来理解图片。通过维度变换来改变为[4,28*28,3],是按照像素来理解图片。维度变换要保证改变维度之后的数据与原数据总量一致且被充分利用维度变换的方法tf.reshape函数的使用:reshape函数的基本语法为 tf.reshape(a,[4,784,3]) 其中a为需要进行维度变换的数据,[]中的内容为改变后的维度,并且tf.re原创 2021-08-09 11:21:59 · 844 阅读 · 0 评论 -
broadcasting
broadcasting意义broadcasting用于优化计算,由于维度不同不能进行四则运算,采用broadcasting的方法可以智能化添加维度来保持维度的一致性(broadcasting不占用内存)便于计算broadcasting的用法broadcasting默认从最小维度(最右侧)对齐,依次向最大维度(最左侧)进行添加维度。如对于一个[4,28,28,3]的数据,如想要加[1],则将[1]先扩充为[3],再扩充为[28,3],再扩充为[28,28,3],再扩充为[4,28,28,3]不是所原创 2021-08-09 11:52:34 · 250 阅读 · 0 评论 -
tf的基本数学运算
tf支持的基本数学运算四则运算 + - * /平方和运算 ** pow square开平方 sqrt取整取余 //(整除) %(余除)指数运算 exp log矩阵相乘 @ matmultf支持的基本数学运算类型元素间的运算(如四则运算,平方和运算,开平方,取余,指数运算)矩阵之间的运算(矩阵相乘)维度之间的运算(如求某一维度的均值,最小值,最大值等)tf基本数学运算实例四则运算和取整取余指数计算:其中log计算默认底为e,如需要log原创 2021-08-09 22:02:47 · 1288 阅读 · 0 评论 -
基于tf的前向传播(张量)
前向传播基于现在的参数不断更新之前的参数思路加载数据集数据集预处理(归一化,分配batch大小)初始化参数与设定学习率前向传播更新参数(梯度下降)(需要在此处改为onehot编码,在此循环外改变编码会导致维度不一致)代码import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import datasets# 取消多余的打印信息import osos.environ['TF_CPP_MIN原创 2021-08-11 16:29:55 · 164 阅读 · 0 评论 -
tf中张量的合并于分割
张量的合并concat函数:concat函数用于合并张量,但不会产生新的维度,具体用法为 tf.concat([a,b],axis=x)其中a和b是两个张量(a,b除了合并的维度之外,其他维度必须相同),x代表在哪个维度上进行合并stack函数:concat函数用于合并张量,会产生新的维度,具体用法为 tf.stack([a,b],axis=x)其中a和b是两个张量(a,b的所有维度必须相同),x代表在哪个维度上增加一个新的维度,并按这个新的维度合并张量的分割unstack原创 2021-08-15 10:38:16 · 342 阅读 · 0 评论 -
tf的数据统计(张量特性)
tf的数据统计范数1范数:元素绝对值的和2范数:元素平方和开根号无穷范数:元素中最大值的绝对值用tf.norm(a,ord=x,axis=y)函数来实现范数,其中x代表为几范数,y代表在第几维上取范数(第0维是按列取,第一维是按行取),ord和axis可不写(即默认为在所有维上取2范数)最大/最小/均值最大/最小/均值分别由tf.reduce_max(a,axis=x),tf.reduce_min(a,axis=x),tf.reduce_mean(a,axis=x)函数实现,其原创 2021-09-06 16:12:08 · 375 阅读 · 0 评论 -
tf的张量排序
tf的张量排序全排序(将所有元素排序)sort用于全排序,argsort用于获得全排序后元素的索引sort(a,direction=’…’)和argsort(a,direction=’…’)多维情况部分排序(取最大的几位)tf.math.top_k(a,x) 取a中的最大x位,可以用indices和values去除最大x位的索引和值top_k accuracy计算前几位的准确率,如最大可能的几个结果中有正确结果的概率。示例:import tensorflo原创 2021-09-06 20:35:28 · 342 阅读 · 0 评论 -
tf的填充与复制
tf的填充与复制填充以2维为例(其它维度同理),填充需要按照维度进行填充,对于2维数据,第一个位置( []的数据 )代表按行填充,左面的数字代表在上面填充几行,右面的数字代表在下面填充几行。第二个位置( []的数据 )代表按列填充,左面的数字代表在上面填充几行,右面的数字代表在下面填充几行。复制...原创 2021-09-07 10:27:41 · 431 阅读 · 0 评论 -
tf中张量的限幅
tf中张量的限幅根据值限幅:根据具体的数值裁剪掉不符合设定范围内的数据tf.clip_by_value(a,x,y) 将a中的值限定在x和y之间。也可通过tf.maximum()和tf.minimum()组合实现可用于产生relu函数等其它特定函数2.根据范数限幅(一般指2范数):将数据整体进行缩放tf.clip_by_norm(a,x) 将a缩放x倍(即a/x)这种缩放方式可以避免由缩放引起的梯度变化梯度缩放:将所有梯度值等比缩放tf.clip_by_glob原创 2021-09-07 11:00:29 · 157 阅读 · 0 评论 -
tf中的坐标
tf中的坐标根据坐标有目的的选择数据tf.where选择的是逻辑值(即True和False),tf.where的结果是True的索引tf.where(cond,a,b) 代表根据cond的值选择对应位置中a或b的值,以二维为例,在cond中True位置选择对应位置a的值,在cond中False位置选择对应位置b的值。根据坐标有目的的更新数据将参数更新到指定的位置(用一组数代替一个模板中特定位置的数)模板中元素必须全为0(且为新建的)tf.scatter_nd(indice原创 2021-09-07 15:21:44 · 277 阅读 · 0 评论 -
tf中数据集的加载
tf中数据集的加载数据集的加载(从网上下载)tf.datasets.数据集名字.loda_data()将数据集处理为tensor先用tf.tf.data.Dataset.from_tensor_slices(),再用next(iter(转换后数据名字))数据预处理数据的打散:采用shuffle操作,即shuffle(x) 其中x代表将x这个范围的数据打散(一般将x取的比较大)数据预处理:先写一个预处理函数(也可以执行别的预处理方法,不一定与下面的方法相同),将数原创 2021-09-07 16:29:42 · 463 阅读 · 0 评论 -
tf中的层(全连接层)
tf中的层(全连接层)tf中分为输入层,隐层,输出层全连接层的实现tf.keras.layers.Dense(层数) 此处的层数指的是连接的两层中后一个层的神经元数目两个层之间的连接(其中kernel看为w,bias为b)多个层之间的连接(全连接):keras.Sequential([layer1,layer2,layer3])import tensorflow as tffrom tensorflow import kerasx = tf.random.normal([2原创 2021-09-07 22:15:57 · 771 阅读 · 0 评论 -
tf中的层(输出层)
tf中的层(输出层)tf中的输出层主要有以下四种情况:实数输出(通常用于预测):有时用relu函数将输出转换为正数[0,1]的输出:一般用sigmoid函数实现[0,1]的输出(输出的总和为1):即概率输出,用softmax函数实现. [-1,1]的输出:可用于多态选择(如LSTM中),用tanh函数实现...原创 2021-09-13 19:43:01 · 562 阅读 · 0 评论 -
tf中的误差计算
tf中的误差计算tensoflow中主要有三种误差计算方式,即均方误差(MSE),交叉熵,铰链损失函数(适用于SVM)均方误差(MSE)概念:均方误差的表达式为loss=∑(y−out)2N loss = \dfrac{\sum(y-out)^2}{N} loss=N∑(y−out)2其中N是为了更好地进行梯度下降,避免弥散和爆炸,一般取batch大小以下展现了三种军方无擦的写法,分别是按数学式实现(loss1),2范数实现(loss2),tf自带的MSE函数实现(loss3)交叉熵原创 2021-09-13 22:24:08 · 508 阅读 · 0 评论 -
tf中的梯度
tf中的梯度目录tf中的梯度1. 梯度的概念2. tensorflow中求解梯度的方法3. 激活函数及其梯度4. 损失函数及其梯度5. 单输出感知机及其梯度6. 多输出感知机及其梯度1. 梯度的概念导数,偏微分,梯度的区别:导数是一个笼统概念,指函数照各个(或某个)方向上的变化率;偏微分为函数在某一确定方向上的变化率,梯度为函数在某几个方向上的变化率##2. tensorflow中求解梯度的方法首先用with tf.GradientTape() as tape将需要更新的函数框起来,再用[需原创 2021-09-14 16:53:19 · 252 阅读 · 0 评论 -
链式法则及反向传播算法
链式法则及反向传播算法目录链式法则及反向传播算法1. 链式法则2. 反向传播推导(多层多输出感知机)3. 2D函数优化(反向传播算法)实现1. 链式法则链式法则即链式求导2. 反向传播推导(多层多输出感知机)简要推导(求和范围为k∈Kk\in Kk∈K)∂E∂wij=∂∂wij(Ok−tk)22\frac{\partial E}{\partial w_{ij}}=\frac{\partial}{\partial w_{ij}}\frac{(O_k-t_k)^2}{2}∂wij∂E=∂w原创 2021-09-14 18:44:56 · 861 阅读 · 0 评论 -
tf的图片识别(基于层)
tf的图片识别(基于层)目录tf的图片识别(基于层)1. 思路2. 代码1. 思路添加相关头文件(数据集管理,Dense层,优化器,容器,测试器)数据预处理(类型转化,归一化)将数据处理为tensor,设置batch大小迭代器构建网络模型(全连层)计算损失函数梯度,更新参数计算准确率2. 代码import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import datasets, laye原创 2021-09-15 15:48:00 · 244 阅读 · 0 评论 -
keras高层API
keras高层APIkeras高层API主要用于代码的简化,即将训练,预测,误差计算等代码简化目录keras高层API1. 数值更新2. 快捷训练方法1. 数值更新数值指准确率和损失函数按batch计算的准确率和损失函数不如按epoch计算的更有说服力主要流程:新建一个Metrics;更新参数(传入需要组成一个epoch时在输出的参数);传出结果;清空Metrics建立一个Metrics:acc_meter = metrics.Accuracy()loss_meter = metric原创 2021-09-15 18:57:34 · 212 阅读 · 0 评论 -
tf中的自定义网络
tf中的自定义网络目录tf中的自定义网络1. keras.Sequential2. keras.layers.Layer3. keras.Model1. keras.Sequential容器,里面声明层,连接方式,激活函数network = Sequential([layers.Dense(256, activation='relu'), layers.Dense(128, activation='relu'), l原创 2021-09-15 19:57:26 · 290 阅读 · 0 评论 -
tf中模型保存与加载
tf中模型保存与加载目录tf中模型保存与加载1. save/load weights2. save/load entire model3. saved_model4. 实战1. save/load weightsmodel.save_wights('/想要保存的地址.ckpt')model = create_model()model.load_wights('/模型保存的地址.ckpt')loss,acc = model.evaluate(test_image, test_label)仅保原创 2021-09-15 20:41:44 · 616 阅读 · 0 评论 -
tf中自定义层实战(CIFAR10图像识别)
tf中自定义层实战(CIFAR10图像识别)目录tf中自定义层实战(CIFAR10图像识别)1. 思路2. 代码1. 思路预处理函数加载数据集与数据预处理自定义层自定义模型网络训练测试(基于keras高层API)保存模型并加载2. 代码import tensorflow as tffrom tensorflow.keras import datasets, layers, optimizers, Sequential, metricsfrom tensorflow import原创 2021-09-16 10:10:26 · 278 阅读 · 0 评论 -
tf中的过拟合和欠拟合
tf中的过拟合和欠拟合目录tf中的过拟合和欠拟合1. 过拟合和欠拟合概念2. 交叉验证3. 过拟合解决方法3.1 获得更多的数据3.2 限制模型复杂度(Regularization)1. 过拟合和欠拟合概念欠拟合:模型的表达能力小于真实数据分布的复杂度(如用一个线性函数表达一个非线性分布时存在欠拟合问题)过拟合:模型的表达能力大于真实数据分布的复杂度(如用一个非线性函数表达一个线性分布时存在过拟合问题)欠拟合的表现:训练准确率差,测试准确率也差过拟合的表现:训练准确率好,测试准确率差,即泛化能原创 2021-09-16 19:24:36 · 352 阅读 · 0 评论 -
tf中的卷积神经网络
tf中的卷积神经网络目录tf中的卷积神经网络1. 卷积2. 卷积神经网络3. 池化和采样1. 卷积对于全连层,有参数过多,加重硬件负担的风险。采用部分连接的方法,如下图所示(其中绿线的权值相同。蓝线的权值相同)可以有效降低参数。对于局部连接可以理解为一组权值(在读完一组图片前权值不变)滑过整张图片,得出新的信息。卷积的概念:卷积的概念如下,两个矩形门函数的卷积是三角函数(详见信号与系统)y(t)=x(t)∗y(t)=∫−∞+∞x(τ)y(t−τ)dτ y(t)=x(t)\ast y(t)=\in原创 2021-09-17 17:06:16 · 695 阅读 · 0 评论 -
tf中的卷积神经网络实战
CIFAR 100实战目录CIFAR 100实战思路(卷积层+池化层+…+卷积层+池化层+全连层+输出层)加载数据集,数据集预处理设定卷积层与池化层设定全连接层(设定卷积层池化层与全连层的输入维度)梯度下降,更新参数测试(获得准确率)代码import tensorflow as tffrom tensorflow.keras import layers, optimizers, datasets, Sequentialimport osos.environ['TF_CPP原创 2021-09-20 20:07:56 · 217 阅读 · 0 评论 -
tf中的常见卷积网络(残差网络ResNet)
tf中的常见网络目录tf中的常见网络1. tf中常见的卷积网络介绍2. 1x1卷积核的作用3. ResNet(残差网络)1. tf中常见的卷积网络介绍LeNet-5:2卷积层,2下采样层,3全连层AlexNet:添加了池化层VGG:运算量较大,卷积+池化+全连(如tf中的卷积神经网络实战中网络)GoogLeNet:在一个层中使用不同的卷积核ResNet:有效解决了因层数增加引起的训练困难问题DenseNet:2. 1x1卷积核的作用降/升维,具体只改变通道的维度3. ResNe原创 2021-09-22 15:02:37 · 1204 阅读 · 0 评论 -
tf中的循环神经网络(RNN)
tf中的循环神经网络(RNN)目录tf中的循环神经网络(RNN)1. 序列数据的表示方法2. 循环神经网络(RNN)3.1. 序列数据的表示方法与时间相关的数据称为时间序列(Sequence)。如股票曲线,语音,句子等序列数据转换为数值数据成为Embeding,如[b, seq_len, feature_len],其中seq_len表示Sequence中的单元数, feature_len表示序列数据转换为数值数据时特征数据的长度Embeding后的batch的理解方式:以股票数据分析为例,[b,原创 2021-09-27 17:05:54 · 450 阅读 · 0 评论 -
tf中的batchnorm
tf中的batchnorm目录tf中的batchnorm1. 使用batchnorm目的2. 常见Normalization([N, C, H*W])3. Batch normalization4. TensorFlow中Batch normalization实现5. 使用Batch normalization好处1. 使用batchnorm目的在使用sigmoid函数时,在函数两端的梯度几乎为0,位于这部分区间的数据参数更新很慢。利用normalization可以把之前数据的分布平移缩放到0附近原创 2021-09-22 17:17:22 · 605 阅读 · 0 评论 -
tf中的LSTM与GRU
tf中的LSTM与GRU文章目录tf中的LSTM与GRU1. RNN存在的问题2. LSTM原理2. LSTM实战2. GRU原理2. GRU实战1. RNN存在的问题普通的RNN网络存在容易梯度爆炸和梯度弥散的问题普通的RNN网络容易出现梯度爆炸和梯度弥散的问题的原因,梯度更新公式为WhhkW_{hh}^kWhhk{Whh>1Whhk⟶∞Whh<1Whhk⟶0\begin{cases} W_{hh}>1 && & W_{hh}^k\longr原创 2021-09-27 20:40:11 · 421 阅读 · 0 评论 -
tf中的Auto Encoder(AE和VAE)
tf中的Auto Encoder(VAE)文章目录tf中的Auto Encoder(VAE)1. Auto Encoder(AE)2. Variational Auto Encoder(VAE)3. AE实战VAE实战1. Auto Encoder(AE)基本Auto EncoderAuto Encoder自编码器应用于无监督学习监督学习,即训练数据含有标签,一般用于分类和预测任务无监督学习,即训练数据不含有标签,一般用于聚类和数据生成任务自编码器的基本结构如下所示,其中encoder的原创 2021-09-28 19:39:49 · 416 阅读 · 0 评论 -
tf中的GAN原理及变种
tf中的GAN原理及变种文章目录tf中的GAN原理及变种1. GAN基本原理2. 纳什均衡3. DCGAN4. EM距离5. WGAN1. GAN基本原理GAN基本结构:GAN基本思想:训练一个判决器,要求其判决准度够高。训练一个生成器,使其生成的数据的分布与训练判决器数据的分布尽可能接近,即使pg(x)p_g(x)pg(x)pr(x)p_r(x)pr(x)尽可能相似GAN的损失函数:minG maxDL(D,G)=Ex∼pr(x)[logD(x)]+Ez∼pz(z)[log原创 2021-09-29 17:08:38 · 351 阅读 · 0 评论 -
tf中DCGAN实战
tf中DCGAN实战文章目录tf中DCGAN实战1. 任务2. GAN模型3. GAN训练4. 数据集处理1. 任务利用DCGAN对Anmie数据集生成2. GAN模型# 定义GAN过程import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layersclass Generator(keras.Model): def __init__(self): supe原创 2021-09-30 19:19:28 · 228 阅读 · 0 评论 -
tf中WGAN-GP实战
tf中WGAN-GP实战文章目录tf中WGAN-GP实战1. 任务2. WGAN模型3. WGAN训练4. 数据集处理1. 任务利用DCGAN对Anmie数据集生成2. WGAN模型# 定义WGAN-GP过程import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layersclass Generator(keras.Model): def __init__(self):原创 2021-10-03 12:46:20 · 529 阅读 · 0 评论