tensorflow学习
文章平均质量分 57
InceptionZ
这个作者很懒,什么都没留下…
展开
-
【TF】RTX3090 tensorflow1.x报错:Blas GEMM launch failed
https://blog.csdn.net/AFXBR/article/details/115441562转载 2021-12-17 21:33:06 · 368 阅读 · 0 评论 -
【TF】显存分配问题
如果使用TF跑程序遇到了“Blas GEMM launch failed“的问题,那么一定是显存不够的原因。主要原因是因为TF在跑GPU代码时会默认申请全部的GPU资源!1. 指定某块GPUimport osos.environ["CUDA_VISIBLE_DEVICES"] = "1"这其实是CUDA本身的参数,对所有深度学习框架都是适用的。需要注意的是最好写在improt keres 和 import tensorflow之前,不然可能出错。注意:写在程序的开头2. 指定多块GPU.原创 2021-12-17 21:19:31 · 1747 阅读 · 0 评论 -
【TF】服务器上跑程序出现显存占用率高 GPU利用率低
参考文章:https://blog.csdn.net/ProLayman/article/details/104758331转载 2021-12-14 13:09:59 · 912 阅读 · 0 评论 -
【TF2】AutoGraph图机制
在tensorflow1.x的时候,代码默认的执行方式是graph execution(图执行),而从tensorflow2.0开始,改为了eager execution(饥饿执行)。正如翻译的意思一样,eager execution会立即执行每一步代码,非常的饥渴。而graph execution会将所有代码组合成一个graph(图)后再执行。1. tf.function的引出在eager 模式下,代码的编写变得很自然很简单,而且因为代码会被立即执行,所以调试时也变得很方便。而graph 模式下,.原创 2021-11-30 15:00:04 · 281 阅读 · 0 评论 -
【TF2】Eager Execution机制
文章目录1. Eager Execution 简介1.1 eager execution 引入1.2 理解eager execution1.3 eager execution优缺点2. eager execution用法2.1 开启eager模式2.1 eager execution 和 numpy3. 动态控制流程4. 建模5. Eager训练5.1 梯度计算5.2 变量和优化6. 使用 python 对象来存储程序状态6.1 变量都是对象6.2 基于对象的保存6.3 Summaries 和 Tensor原创 2021-11-30 11:26:22 · 2477 阅读 · 0 评论 -
【TF2】tf.train.Checkpoint变量的保存与恢复
Tensorflow的Checkpoint机制将可追踪变量以二进制的方式储存成一个.ckpt文件,储存了变量的名称及对应张量的值。 Checkpoint 只保存模型的参数,不保存模型的计算过程,因此一般用于在具有模型源代码的时候恢复之前训练好的模型参数。如果需要导出模型(无需源代码也能运行模型),则需要使用其他例如tf.keras.Model.save()方法。 很多时候,我们希望在模型训练完成后能将训练好的参数(变量)保存起来。在需要使用模型的其他地方载入模型和参数,就能直接得到训练好的.原创 2021-11-30 11:02:34 · 1135 阅读 · 0 评论 -
【TF2】Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
一、问题出现在使用TensorFlow或者Keras准备进行网络训练时,有时候会出现如下报错:Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR二、问题分析有的时候,电脑gpu显存明显是足够的,为何还是为报错呢?一般情况下,如果不加以限制,很多深度学习框架的代码在运行的时候会申请整个显存空间(即便它不需要这么多的资源,但是它申请了之后就不允许其他的程序使用),所以在这种状态下运行代码,就会出现显存不够用的问题(因为还有其他的程序或原创 2021-11-29 14:44:58 · 123 阅读 · 0 评论 -
【TF2】tf.keras.layers.Reshape文档解读
# Layer that reshapes inputs into the given shapetf.keras.layers.Reshape(target_shape, **kwargs)Input shapeArbitrary, although all dimensions in the input shape must be known/fixed. Use the keyword argument input_shape (tuple of integers, does not incl原创 2021-11-28 18:10:42 · 1992 阅读 · 0 评论 -
tennsorflow中的断点续训问题
1. 什么是断点续训问题你可以这样想,当你训练模型需要很多epoch,但是你具体有多少个epoch才能达到你的标准,你把epoch设置高了不仅会加大资源的消耗而且很容易出现其他的一些问题。所以有人就想了,能不能把模型分多次跑,每一次在上一次的基础上继续训练,直到达到我们满意的效果,如果可以这样就存在一个问题,就是如何保存每一次的训练参数,这就是断点续训问题。2. 如何执行断点续训2.1 tf.keras.callbacks.ModelCheckpoint()类我们可以使用tensorflow提供的类原创 2020-11-14 09:56:40 · 540 阅读 · 0 评论 -
tensorflow中的变量问题
问题1当我们将模型训练好时,可以调用model.trainable_variables来查看模型训练结果后的变量值,这里简单展示一下,大概长这样:它以列表的形式返回,列表中的每个元素表示一个变量值,类型是tensorflow.python.ops.resource_variable_ops.ResourceVariable那么问题来了,上面这个是什么玩意(对象)?一番查阅资料后,得到如下结论:在tensorflow中,Variable是一个资源,继承自ResourceBase并由Resour原创 2020-11-13 14:50:55 · 1196 阅读 · 1 评论 -
解决安装tensorflow-gpu时缺少各种dll文件
解决:1.下载dll文件链接:提取码koj72.将文件放在参考链接:https://www.pianshen.com/article/37081444749/https://cn.dll-files.com/download/994dd042ca3c37a2a29d82add24dadf0/cusparse64_10.dll.html?c=SnlOdTUrUlIva2h6RHIyTTNwT09EQT09https://cn.dll-files.com/search/?q=cusolver64.原创 2020-09-12 19:54:52 · 2842 阅读 · 1 评论 -
Keras文档解读——Model saving & serialization APIs
Keras原文链接1. save 方法以Tensorflow SavedModel(文件夹)或者一个单个的HDF5文件保存一个模型.保存文件里边包括以下信息:1.模型的网络结构,这允许重新实例化模型2.模型的权重信息3.优化器的状态,允许在你停止的地方重新开始训练Model.save( filepath, overwrite=True, include_optimizer=True, save_format=None, signatures=None原创 2020-07-11 20:13:31 · 601 阅读 · 0 评论 -
Keras文档解读——Model training APIs
Keras原文链接1. compile 方法配置模型的一些信息,来进行训练,不再将参数,太多了Model.compile( optimizer="rmsprop", loss=None, metrics=None, loss_weights=None, weighted_metrics=None, run_eagerly=None, **kwargs)2. fit 方法训练模型,需要一些必须参数:epochs,batch_size,原创 2020-07-11 10:41:21 · 1042 阅读 · 0 评论 -
Keras文档解读——The Sequential class
Keras文档原文链接1. Sequential classSequential将layers进行线性堆叠形成一个tf.keras.Model对象Sequential提供模型训练和推断额功能,因为Sequential是Model的子类,继承了Model类的方法tf.keras.Sequential(layers=None, name=None)2. 例子你可以选择性的在模型Squential的第一层接收一个’input_shape’参数>>> # Optionall原创 2020-07-11 10:15:27 · 257 阅读 · 0 评论 -
Keras文档解读——The Model class
Keras原文链接写在前面不定期更新解读翻译Keras文档,这是tensorflow2.x版本的keras接口文档,注意一下。1. Model classModel类将许多layer组合在一起形成一个对象,一次训练或者预测特征数据tf.keras.Model(inputs,outputs,name)参数:inputs:模型的输入。 一个keras.Input对象或者以list形式的多个keras.Input对象。outputs:模型的输出。同上,也存在多个输出name:字符串类型,为模原创 2020-07-10 20:17:09 · 962 阅读 · 0 评论 -
tensorflow——记录装多版本GPU的过程
写在前面我之前按照keras中文文档已经安装好了tenforflow-gpu 2.1 ,并且在这个基础上安装好了keras,但是在github找的许多代码都是基于tensorflow-gpu 1.×的keras框架,同时我又不想覆盖掉我的tensorflow-gpu 2.1,并且我之前安装的cuda版本为10.1。1. 安装要求tensorflow1.8-gpucuda9.0cudnn7.02. 安装过程打开你的Anaconda Prompt,开始操作起来吧1.创建一个新的虚拟环境,保证原创 2020-07-09 14:45:11 · 116 阅读 · 0 评论 -
tensorflow2.x实现两个多元高斯分布之间的KL散度,很重要
0.背景现在假设你要用tensorflow计算两个多元高斯分布之间的KL散度,用闭式解,该如何用tensorflow2.x实现。看到这个公式,相比大家都是头疼的,尤其在训练时候,还要考虑Batch的维度。今天就用tensorflow实现一下。1. tensorflow矩阵操作1.1 多维矩阵的乘法一般我们都考虑二维矩阵的乘法,只需要注意两个矩阵的维度即可。但是,有的时候,我们还需要考虑例如Batch_size怎么搞,这是这一小结要解决的问题。1.1.1 tf.matmul函数点我原创 2020-06-23 20:19:51 · 2635 阅读 · 0 评论 -
使用tensorflow2.x解决离散分布之间的KL散度
写在前面我看了一下keras文档,想了解一下如何方便的计算KL散度,于是发现了一点线索。Keras文档只写了离散分布的KL散度,它们不写连续分布的KL散度库函数是有原因的,连续分布太过于复杂,不同分布之间有着不同的公式,无法统一。二离散分布就有统一公式,只需要给出分布律就能计算。KLDivergence class用来计算y_true和y_predict之间的KL散度loss = y_true * log(y_true / y_pred)tf.keras.losses.KLDivergen原创 2020-06-17 10:46:59 · 2524 阅读 · 0 评论 -
用tensorflow构建多元高斯分布和高斯混合分布
1. 用tensorflow构建多元高斯分布为了更好的使用概率知识,tensorflow专门建立了一个tensorflow_probability库用来封装各种概率模型。1.1 准备工作import tensorflow as tf import tensorflow_probability as tfptfd = tfp.distributions1.2 构建多元高斯分布的函数1.2.1 解释文档tfd.MultivariateNormalDiag( loc=None, #原创 2020-05-27 14:41:34 · 2540 阅读 · 2 评论 -
tensorflow2.1中的一些shape问题
tf.nn.sigmoid_cross_entropy_with_logits(labels,logits)与tf.keras.losses.BinaryCrossentropy()中shape的区别假设输入和输出都是(batch_size,28,28,1),这里batch=20labels = tf.constant(tf.ones(shape=(20,28,28,1)))logits = tf.constant(tf.zeros(shape=(20,28,28,1)))ce = tf.ke原创 2020-05-24 15:57:10 · 451 阅读 · 0 评论 -
模型训练中遇到的问题——梯度消失/爆炸(Loss为nan)
可能出现的原因Learning_rate过大,导致梯度较大,导致梯度爆炸激活函数、损失函数选取不当,在这种情况很少出现当网络的层数比较多,模型的数值稳定性容易变差,容易产生梯度消失和梯度爆炸,这会导致我们的loss在训练时变为nan,也称之为数据溢出。采用stride大于kernel size的池化层解决方法(个人经验)首先不要先考虑激活函数,应该先考虑的是learning_rate,试着降低学习率,虽然优化器(Adam)推荐0.001,但并不适用全部网络,试着减少一个量级。如果发现减少原创 2020-05-16 10:34:17 · 7073 阅读 · 3 评论 -
Keras文档解读——Making new layers and models via subclassing
参考原文链接Making new layers and models via subclassing1. 准备工作import tensorflow as tffrom tensorflow import keras2. The Layer class: 结合了权重和一些计算Layer类整合了Layer的权重和该层的前向传播下面举一个线性全连接的例子,并且我们可以使用一个tensor来使用该layer进行计算class Linear(keras.layers.Layer): d原创 2020-05-15 16:20:58 · 251 阅读 · 0 评论 -
如何在tf.layers.dense中使用leaky_relu
因为leaky_relu不支持字符形式,即# this is wriongtf.layers.Dense(units,activation='leaky_relu')# right operationimport tensorflow as tffrom functools import partialoutput = tf.layers.dense(input, n_units, activation=partial(tf.nn.leaky_relu, alpha=0.01))..原创 2020-05-15 11:11:01 · 1726 阅读 · 0 评论 -
tensorflow2.1.0——Conv2D文档解读
1. 参数列表Init signature:Conv2D( filters, # given must kernel_size, # given must strides=(1, 1), # the rest is optional padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_init原创 2020-05-09 20:49:21 · 588 阅读 · 1 评论 -
【TF2】tensorflow2.1.0——Dense文档解读
知识点重点解读shape当我们在Squential中的第一层使用Dense时,一定要注意是否我们的train_data.shape被展平了。例如,当我们使用MNIST数据集时,原始的train_data.shape=(60000,28,28),我们要进行处理保证shape=(60000,784),否则虽然不会报错,但是训练结果并不是你期望的。# as first layer in a sequential model:model = Sequential()model.add(Dense(..原创 2020-05-09 16:36:31 · 928 阅读 · 0 评论 -
tensorflow2.1.0——Squential文档解读
在Squential列表里边可以有选择性的写input_shape参数,下面介绍介绍几种写法,任选其一即可,选择自己习惯的常用。(1) 当我们选择在第一层声明input_shape时,有以下几种写法这种写法会让模型从一开始就有网络参数,并随着网络深度的增加,后面会自动地随机初始化对应shape地权重## 写法1model = Sequential()model.add(Dense(32, input_shape=(500,)))## 写法2model = Sequential()m.原创 2020-05-09 16:07:06 · 291 阅读 · 0 评论 -
tensorflow2.1.0——如何构建网络(三)
文章目录0. 写在前面1. 回顾0. 写在前面这一期主要会写如何构建更大更复杂的模型上,这里的复杂主要指的是:损失函数、模型。本期主要会以GAN和VAE来讲,内容很多,但废话不多。1. 回顾第一期主要讲了使用Squential搭建网络,并可以使用compile函数来配置模型的训练信息{loss,optimizer,metrics};使用fit函数来对模型和数据进行循环训练。第二期主...原创 2020-05-06 00:12:18 · 730 阅读 · 0 评论 -
tf.keras.layers.Lambda()——匿名函数层解析
1. 参数列表2. 作用可以把任意的一个表达式作为一个“Layer”对象Lambda层之所以存在是因为它可以在构建Squential时使用任意的函数或者说tensorflow 函数。在我们需要完成一些简单的操作(例如VAE中的重采样)的情况下,Lambda层再适合不过了。3. 举个栗子(VAE)可以看到通过在encoder和decoder中间加入一个Lambda层使得enco...原创 2020-05-03 21:29:47 · 14790 阅读 · 0 评论 -
tensorflow2.1.0——如何构建网络(二)
一、构建网络的第二种方式通过输入层和输出层来构建网络,网络包含输入和输出中间的隐藏层,这会返回一个Model对象,通过该对象可以调用model.compile和model.fit函数,非常方便。import tensorflow as tfimport tensorflow.keras.layersx = layers.Input(shape=(784,)) # 输入层,shape...原创 2020-05-03 17:41:57 · 3563 阅读 · 0 评论 -
tf.keras.layers.Input()输入层解析
1. 参数列表layers.Input( shape=None, batch_size=None, name=None, dtype=None, sparse=False, tensor=None, ragged=False, **kwargs,)2. 该层的用途用于构建网络的第一层——输入层,该层会告诉网络我们的输入的尺...原创 2020-05-03 11:38:54 · 35161 阅读 · 13 评论 -
tensorflow2.1.0——如何构建网络(一)
写在前面这个系列博客会具体讲讲怎么用tensorflow去搭建网络,其中一些细节例如如何加载数据集、需要哪些包可以参考我的其他博客。以此,来增加自己的编程能力。也会解读一些keras源码等一、神经网络中有哪些层点我从连接方式来说:全连接Dense、Conv2D、Conv2DTranspose、RNN等主要的功能层:BN层,激活函数层、Input层,Lambda层、Dropout层、...原创 2020-05-02 18:03:26 · 1781 阅读 · 0 评论 -
jupyter notebook-如何产生动图(生成模型的利器)
问题描述当我们在训练生成模型时,如何方便的观察生成图像的质量-----毫无疑问动态是最好的效果!IPython中的display模块Ipython中的display模块可以很好的控制jupyter notebook中每个cell的输出,我们通过控制“生成图片和清除图片”来达到gift的效果代码——以MNIST数据集为例import numpy as npimport tenso...原创 2020-05-02 16:39:28 · 2486 阅读 · 0 评论 -
如何快速的加载keras中的数据集(亲测有效)
加载数据集遇到的问题网络延迟,下载缓慢将数据集下载至本地再加载下面给出三大数据集的百度云链接,拿走点个赞再走好不好,嘻嘻。 提取码:nold将文件下载到哪里默认情况下C:\Users\xxxx.keras\datasets,xxxx代表你的用户名字使用keras加载数据集...原创 2020-04-27 10:58:52 · 3387 阅读 · 3 评论 -
tensorflow2.1.0使用GPU报错问题
我的配置显卡:MX250(联想小新系列)显卡算力:6.1(tensorflow要求至少3.1即可)cuda:10.1版本(支持tensorflow2.1.0及以上)cudnn:7.6版本(与cuda匹配)安装tensorflow2.1.0打开Anaconda prompt,并进入到2.1环境里边conda install cudatoolkit=10.1conda insta...原创 2020-04-25 11:15:53 · 1677 阅读 · 0 评论 -
sigmoid&softmax函数的数据溢出问题
原创 2020-04-24 17:42:58 · 774 阅读 · 1 评论 -
交叉熵损失函数的总结
文章目录sigmoid交叉熵二值交叉熵损失小结稀疏softmax交叉熵分类交叉熵sigmoid交叉熵具体地,在离散分类任务中衡量概率分布的误差,输出层不需要使用激活函数。特别地注意:用来处理每个类别独立但不互斥的情况tf.nn.sigmoid_cross_entropy(labels=None,logits=None,name=None)这里的logits参数表示未经过概率处理的值。返...原创 2020-04-24 17:00:04 · 841 阅读 · 0 评论 -
Cannot convert a partially known TensorShape to a Tensor
原因:可能是由于get_shape()返回的是元组,tf.shape()返回的是tensor,所以tf.shape()返回的为None的batch_size维度可以继续作为其他tensor的维度,而get_shape()由于返回的是元组,取到的batch_size维度直接是None了,无法作为其他tensor的维度.建议:在构建模型,尤其是自定义模型时,一定要把shape换成tf.Tenso...原创 2020-04-06 15:49:04 · 5429 阅读 · 1 评论 -
纵观Tensorflow、Keras、Pytorch的发展史
Tensorflow的发展历史:2015年9月发布0.1版本2017年2月发布0.1版本2019年春发布2.0版本(2.0beta)与tensorflow同时期出来的框架Scikit-learn:面向传统机器学习的框架,无深度学习框架,并且没有采用gpu加速Caffe:由华人开发的第一个深度学习框架,采用C++编写,并可调用python接口,是最早的深度学习框架。缺点是:No a...原创 2020-02-17 21:11:03 · 1684 阅读 · 0 评论