深度学习
文章平均质量分 57
「已注销」
这个作者很懒,什么都没留下…
展开
-
自编码和解码
文章目录压缩与解压编码器EncoderAutoencoder压缩与解压 有一个神经网络,它所做的事情是接收一张图片,然后给它打码,最后再从打码后的图片中还原,具体过程如下: 可以看出图片其实是经过了压缩再解压的这一道工序,当压缩的时候,原有的图片质量被缩减,解压时用信息量小却包含了所有关键信息的文件恢复出原本的图片。为什么要这样做呢? 原来有时神经网络要接受大量的输入信息,比如输入信息是高清图片时,输入信息量可能达到上千万,让神经网络直接从上千万个信息源中学习是一件很吃力的工作。所以需要压转载 2021-12-04 12:58:05 · 567 阅读 · 0 评论 -
Tensorflow设置学习速率
在Tensorflow中,为解决设定学习率(learning rate)问题,提供了tf.train.exponential_decay函数实现指数衰减学习率。首先使用较大学习率,目的是快速得到一个比较优的解;然后通过迭代逐步减小学习率,目的是使模型在训练后期更加稳定:decayed_learning_rate = learining_rate * decay_rate^(global_step / decay_steps)decayed_learning_rate:每一轮优化时使用的学习率。转载 2021-06-27 20:09:54 · 1609 阅读 · 0 评论 -
TensorFlow训练并识别数字
训练代码如下:import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('MNIST_data', one_hot=True)def compute_accuracy(v_xs, v_ys): global prediction # 定义全局变量 y_pre = sess.run(prediction,转载 2021-06-27 19:42:15 · 800 阅读 · 0 评论 -
TensorFlow识别MNIST数字
MNIST数据集 MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片:它也包含每一张图片对应的标签,告诉我们这个是数字几。例如上面这四张图片的标签分别是5、0、4和1。 MNIST数据集的官网是http://yann.lecun.com/exdb/mnist/。以下的python源代码用于自动下载和安装这个数据集:from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_d转载 2021-06-27 08:15:57 · 334 阅读 · 0 评论 -
tf.one_hot
该函数用于将输入转换成one-hot形式:tf.one_hot(indices, depth, on_value, off_value, axis)indices:非负整数表示的标签列表,len(indices)就是分类的类别数。tf.one_hot返回的张量的阶数为indeces的阶数加上1。当indices的某个分量取-1时,即对应的向量没有独热值。depth:每个独热向量的维度。on_value:独热值。off_value:非独热值。axis:指定第几阶为depth维独热向量,默认转载 2021-06-19 14:10:47 · 157 阅读 · 0 评论 -
initialized_value
你有时候会需要用另一个变量的初始化值给当前变量初始化。由于tf.initialize_all_variables是并行地初始化所有变量,所以在有这种需求的情况下需要小心。 用其它变量的值初始化一个新的变量时,使用其它变量的initialized_value属性。你可以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量:# Create a variable with a random valueweights = tf.Variable(tf.random_n转载 2021-06-19 09:03:21 · 316 阅读 · 0 评论 -
tf.py_func
这是一个可以把TensorFlow和Python原生代码无缝衔接起来的函数,有了它,你就可以在TensorFlow里面自由的实现你想要的功能,而不用考虑TensorFlow有没有实现它的API,并且可以帮助我们实现自由地检查该功能模块的输入输出是否正确,而不受到TensorFlow的先构造计算图再运行导致的不能单独检测单一模块的功能的限制。 它的具体功能描述是包装一个普通的Python函数,这个函数接受numpy的数组作为输入和输出,让这个函数可以作为TensorFlow计算图上的计算节点OP来使用转载 2021-06-19 09:01:23 · 779 阅读 · 0 评论 -
tf.trainable_variables
在创造变量(tf.Variable、tf.get_variable等)时,都会有一个trainable的选项,表示该变量是否可训练,这个函数会返回图中所有trainable=True的变量。tf.get_variable和tf.Variable的默认选项是True,而tf.constant只能是False:import tensorflow as tfa = tf.get_variable('a', shape=[5, 2])b = tf.get_variable('b', shape=[2,转载 2021-06-19 08:13:32 · 1013 阅读 · 0 评论 -
tf.Session.as_default
如果使用关键字with来指定会话,可以在会话中执行Operation.run或Tensor.eval,以得到运行的tensor结果:c = tf.constant(...)sess = tf.Session()with sess.as_default(): assert tf.get_default_session() is sess print(c.eval())使用函数tf.get_default_session来得到当前默认的会话。需要注意的是,退出as_default转载 2021-06-19 05:54:54 · 463 阅读 · 0 评论 -
tf.sparse_to_dense
函数原型如下:tf.sparse_to_dense(sparse_indices, output_shape, sparse_values, default_value, name=None)这个函数的作用是将一个稀疏表示转换成一个密集张量。具体将稀疏张量sparse转换成密集张量dense的步骤如下:# If sparse_indices is scalardense[i] = (i == sparse_indices ? sparse_values : default_value)# I转载 2021-06-18 21:42:46 · 983 阅读 · 0 评论 -
tf.add_to_collection和tf.get_collection
tf.add_to_collection是把变量放入一个集合,把很多变量变成一个列表;tf.get_collection是从一个集合中取出全部变量,返回值是一个列表;tf.add_n是把一个列表的东西都依次加起来:import tensorflow as tfimport numpy as npv1 = tf.get_variable(name='v1', shape=[1], initializer=tf.constant_initializer(0))tf.add_to_collectio转载 2021-06-18 20:59:26 · 203 阅读 · 0 评论 -
assign函数
tf.assign(A, new_number)的功能是把A的值变为new_number:import tensorflow as tfstate = tf.Variable(0, name='counter')one = tf.constant(1) # 定义常量onenew_value = tf.add(state, one) # 定义加法步骤(注意,此步并没有直接计算)update = tf.assign(state, new_value) # 将State更新成new_valu转载 2021-06-18 07:31:58 · 4163 阅读 · 0 评论 -
random_normal函数
tf.random_normal函数用于从服从指定正态分布的数值中取出指定个数的值:tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)shape:输出张量的形状。mean:正态分布的均值。stddev是正态分布的标准差。dtype:输出的类型。seed:随机数种子,是一个整数。name:操作的名称。 以下程序定义一个w1变量:import tensorflow转载 2021-06-17 21:18:43 · 2175 阅读 · 0 评论 -
tf.concat
该函数用于连接两个矩阵的操作:tf.concat(concat_dim, values, name='concat')concat_dim:tensor连接的方向(维度),cancat_dim维度可以不一样,其他维度的尺寸必须一样。values:两个或者一组待连接的tensor。name:指定该操作的name。t1 = [[1, 2, 3], [4, 5, 6]]t2 = [[7, 8, 9], [10, 11, 12]]tf.concat(0, [t1, t2]) => [[原创 2021-06-17 21:14:30 · 132 阅读 · 0 评论 -
tf.reshape详解
tf.reshape(tensor, shape, name=None)的作用是将tensor变换为参数shape的形式。其中shape为一个列表形式,特殊的一点是列表中可以存在-1,-1代表的含义是不用我们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1(当然如果存在多个-1,就是一个存在多解的方程了)。 TensorFlow根据shape变换矩阵的方式为reshape(t, shape) => reshape(t, [-1]) => reshape(t, shape),转载 2021-06-17 19:55:39 · 2120 阅读 · 0 评论 -
tf.identity
下面的程序想要执行5次循环,每次循环给x加1并赋值给y,然后打印出来:import tensorflow as tfx = tf.Variable(0.0)x_plus_1 = tf.assign_add(x, 1) # 返回一个op,表示给变量x加1的操作with tf.control_dependencies([x_plus_1]): y = xinit = tf.global_variables_initializer()with tf.Session() as se转载 2021-06-17 10:07:47 · 200 阅读 · 0 评论 -
Session.run和Tensor.eval
TensorFlow运行代码时,在会话中需要运行节点,可能会碰到两种方式,即Session.run和Tensor.eval,两者之间的差异如下。 如果你有一个Tensor t,在使用t.eval时,等价于tf.get_default_session().run(t),实例如下:t = tf.constant(42.0)sess = tf.Session()with sess.as_default(): # or `with sess:` to close on exit asser转载 2021-06-17 07:07:21 · 233 阅读 · 0 评论 -
tf.nn.in_top_k
tf.nn.in_top_k用于计算预测的结果和实际结果的是否相等,并返回一个bool类型的张量:tf.nn.in_top_k(prediction, target, K)prediction:预测的结果,大小就是预测样本的数量乘以输出的维度。target:实际样本类别的标签,大小就是样本数量的个数。K:每个样本的预测结果的前k个最大的数里面是否包含targets预测中的标签,一般都是取1。import tensorflow as tfA = [[0.8, 0.6, 0.3], [0转载 2021-06-17 06:50:41 · 177 阅读 · 0 评论 -
TensorFlow之命令行参数
TensorFlow定义了tf.app.flags(也可以用它的别名tf.flags),用于支持接受命令行传递参数,相当于接收argv:import tensorflow as tf# 第一个是参数名称,第二个参数是默认值,第三个是参数描述tf.app.flags.DEFINE_string('str_name', 'def_v_1', "descript1")tf.app.flags.DEFINE_integer('int_name', 10, "descript2")tf.app.fla转载 2021-06-17 05:37:14 · 263 阅读 · 0 评论 -
tf.control_dependencies
在有些机器学习程序中,我们想要指定某些操作执行的依赖关系,这时可以使用tf.control_dependencies(control_inputs)来实现。该函数返回一个控制依赖的上下文管理器,使用with关键字可以让在这个上下文环境中的操作都在control_inputs执行。with g.control_dependencies([a, b, c]): # 'd' and 'e' will only run after 'a', 'b', and 'c' have executed转载 2021-06-16 20:50:50 · 220 阅读 · 0 评论 -
错误类(Error classes)
错误类如下:操作描述class tf.OpError一个基本的错误类型,在当TF执行失败时候报错tf.OpError.op返回执行失败的操作节点,有的操作(如Send或Recv)可能不会返回,那就要用用到node_def方法tf.OpError.node_def以NodeDef proto形式表示失败的optf.OpError.error_code描述该错误的整数错误代码tf.OpError.message返回错误信息class tf.err转载 2021-06-16 20:37:49 · 162 阅读 · 0 评论 -
TensorFlow的算术操作
TensorFlow的算术操作如下:操作描述tf.add(x, y, name=None)求和tf.multiply(x, y, name=None)减法tf.multiply(x, y, name=None)乘法tf.div(x, y, name=None),推荐使用tf.divide除法tf.mod(x, y, name=None)取模tf.abs(x, name=None)求绝对值tf.negative(x, name=None原创 2021-06-16 20:24:54 · 188 阅读 · 0 评论 -
get_shape函数
get_shape函数主要用于获取一个张量的维度,并且输出张量每个维度上面的值。如果是二维矩阵,也就是输出行和列的值,使用非常方便。import tensorflow as tfwith tf.Session() as sess: A = tf.random_normal(shape=[3, 4]) print(A.get_shape()) print(A.get_shape)执行结果:(3, 4)<bound method Tensor.get_shape转载 2021-06-16 20:11:33 · 1111 阅读 · 0 评论 -
理解TensorFlow的Queue
这篇文章来说明TensorFlow里与Queue有关的概念和用法,其实概念只有三个:Queue是TF队列和缓存机制的实现。QueueRunner是TF中对操作Queue的线程的封装。Coordinator是TF中用来协调线程运行的工具。虽然它们经常同时出现,但这三样东西在TensorFlow中是可以单独使用的。Queue 根据实现的方式不同,分成具体的几种类型:tf.FIFOQueue:按入列顺序出列的队列(如果希望读入的训练样本是有序的)。tf.RandomShuffleQue转载 2021-06-04 05:32:47 · 324 阅读 · 0 评论 -
TensorFlow之线程和队列
在使用TensorFlow进行异步计算时,队列是一种强大的机制。正如TensorFlow中的其他组件一样,队列就是TensorFlow图中的节点。这是一种有状态的节点,就像变量一样:其他节点可以修改它的内容。具体来说,其他节点可以把新元素插入到队列后端(rear),也可以把队列前端(front)的元素删除。 为了感受一下队列,来看一个简单的例子。我们先创建一个先入先出的队列(FIFOQueue),并将其内部所有元素初始化为零。然后构建一个TensorFlow图,它从队列前端取走一个元素,加上1之后,转载 2021-06-03 21:45:22 · 166 阅读 · 0 评论 -
基于TensorFlow的多任务学习模型
当你在思考新事物的时候,通常会利用以前的经验和获得的知识来加速现在的学习过程。例如当学习一门新语言时,尤其是相关的语言时,通常会使用我们以前学过的语言知识来加快这一门新语言的学习过程。这个过程也可以用另一种方式来理解 – 学习一种新的语言可以帮助你更好的理解和说出自己的想法。 我们的大脑会同时学习多种不同的任务,无论是想将英文翻译成中文,还是想将中文翻译成德语,都是使用相同的大脑架构,也就是我们自己的脑袋。同理在机器学习模型中,如果采用的是同一个网络来同时完成这两个任务,那么就可以把这个任务称为多任转载 2021-06-02 19:38:42 · 750 阅读 · 0 评论 -
基于LSTM模型的MNIST分类
设置RNN的参数 这次我们使用RNN来进行分类的训练,继续使用手写数字MNIST数据集。让RNN从每张图片的第一行像素读到最后一行,然后再进行分类判断。接下来导入MNIST数据并确定RNN的各种参数:import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('./MNIST_data', one_hot=True)lr =转载 2021-06-02 07:34:44 · 576 阅读 · 0 评论 -
RNN的MNIST实验
在TensorFlow上实现基础LSTM网络 此笔记的主要目的就是使读者熟悉在TensorFlow上实现基础LSTM网络的详细过程。我们将选用MNIST作为数据集,它包括手写数字的图像和对应的标签,我们可以根据以下内置功能从TensorFlow上下载并读取数据:from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("./data/", one_hot=True)数据被转载 2021-06-02 07:10:03 · 613 阅读 · 0 评论 -
TensorFlow处理图片
TensorFlow与OpenCV OpenCV读入图片,使用tf.Variable初始化为tensor,加载到tensorflow对图片进行转置操作,然后opencv显示转置后的结果:import tensorflow as tfimport cv2filename = "index.jpg"image = cv2.imread(filename, 1)cv2.imshow('image', image)x = tf.Variable(image, name='x')model =转载 2021-06-01 20:29:05 · 742 阅读 · 0 评论 -
TensorFlow之variable scope
Tensorflow为了更好的管理变量,提供了variable scope机制,其官方解释如下: Variable scope object to carry defaults to provide to get_variable. Many of the arguments we need for get_variable in a variable store are most easily handled with a context. This object is used for th转载 2021-06-01 19:37:22 · 713 阅读 · 0 评论 -
TensorFlow之nn的API
激活函数 在神经网络中,我们有很多的非线性函数来作为激活函数,比如连续的平滑非线性函数(sigmoid、tanh和softplus),连续但不平滑的非线性函数(relu、relu6和relu_x)和随机正则化函数(dropout)。所有的激活函数都是单独应用在每个元素上面的,并且输出张量的维度和输入张量的维度一样。 relu函数原型为:tf.nn.relu(features, name = None)这个函数的作用是计算激活函数relu,即max(features, 0)。import te转载 2021-06-01 08:05:42 · 389 阅读 · 0 评论 -
TensorFlow实现多层感知机
多层感知机简介 多层感知机(Multilayer Perceptron,MLP)也叫做人工神经网络(Artificial Neural Network,ANN),除了输入和输出层,它中间可以有多个隐层。最简单的MLP只含一个隐层,即三层的结构,如下图所示。可以看到,多层感知机层与层之间是全连接的(全连接是指上一层的任何一个神经元与下一层的所有神经元都有连接)。单层感知器只能学习线性函数,而多层感知器也可以学习非线性函数。 Softmax回归可以算是多分类问题logistic回归,它和神经网络的最大转载 2021-06-01 06:40:19 · 407 阅读 · 0 评论 -
TensorFlow优化器
深度学习常见的是对于梯度的优化,优化器最后其实就是各种对于梯度下降算法的优化。TensorFLow提供了很多优化器的支持。tf.train.GradientDescentOptimizer 这个类是实现梯度下降算法的优化器。tf.train.AdadeltaOptimizer 实现了Adadelta算法的优化器,该算法不需要手动调优学习速率,抗噪声能力强,可以选择不同的模型结构。Adadelta是对Adagrad的扩展。Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是计算对转载 2021-05-31 21:49:50 · 2222 阅读 · 0 评论 -
TensorFlow之input pipeline性能指南
GPU和TPU可以从根本上减少执行单个training step所需的时间。为了达到高性能,我们需要一个高效的input pipeline,它可以在当前step完成后为下一个step高效分发数据。tf.data的API可以帮助构建灵活和高效的input pipeline。该文档解释了tf.data的API特性以及最佳实践,来跨多种模型和加速器构建高性能tensorflow input pipelines。Input Pipeline结构 一个典型的tensorflow training input转载 2021-05-31 21:21:25 · 570 阅读 · 0 评论 -
TensorFlow制作TFRecord数据集
关于TensorFlow读取数据,官网给出了三种方法:供给数据:在TensorFlow程序运行的每一步,让Python代码来供给数据。从文件读取数据:在TensorFlow图的起始,让一个输入管线从文件中读取数据。预加载数据:在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 对于数据量较小而言,可能一般选择直接将数据加载进内存,然后再分batch输入网络进行训练(使用这种方法时,结合yield使用更为简洁)。如果数据量较大,这样的方法就不适用了,因为太转载 2021-05-31 21:01:46 · 376 阅读 · 0 评论 -
TensorFlow之猫狗分类
猫狗大战数据集 Cats vs. Dogs(猫狗大战)是Kaggle大数据竞赛某一年的一道赛题,利用给定的数据集,用算法实现猫和狗的识别。数据集可以从Kaggle官网上下载,即https://www.kaggle.com/c/dogs-vs-cats。数据集由训练数据和测试数据组成,训练数据包含猫和狗各12500张图片,测试数据包含12500张猫和狗的图片。 首先在Pycharm上新建Cats_vs_Dogs工程,工程目录结构为:data文件夹下包含test和train两个子文件夹,分别用于存放转载 2021-05-31 19:38:19 · 3307 阅读 · 1 评论 -
TensorFlow实现卷积神经网络
卷积神经网络概述 卷积神经网络(Convolutional Neural Network,CNN)最初是为解决图像识别等问题设计的,CNN现在的应用已经不限于图像和视频,也可用于时间序列信号,比如音频信号和文本数据等。在早期的图像识别研究中,最大的挑战是如何组织特征,因为图像数据不向其他类型的数据那样可以通过人工理解提取特征。在深度学习之前,我们必须借助SIFT、HoG等算法提取具有良好区分性的特征,再集合SVM等机器学习的算法进行图像识别。 CNN作为一个深度学习架构被提出的最初诉求,是降低对图转载 2021-05-31 07:24:19 · 1880 阅读 · 0 评论 -
TensorBoard的使用
TensorBoard可以将训练过程中的各种绘制数据展示出来,包括标量(scalars)、图片(images)、音频(Audio)、计算图(graph)、数据分布、直方图(histograms)和嵌入式向量。使用TensorBoard展示数据,需要在执行TensorFlow计算图的过程中,将各种类型的数据汇总并记录到日志文件中。然后使用TensorBoard读取这些日志文件,解析数据并生产数据可视化的Web页面,让我们可以在浏览器中观察各种汇总数据。 summary_op包括了summary.sca转载 2021-05-31 06:51:40 · 203 阅读 · 0 评论 -
TensorFlow编程模型
TensorFlow的计算可以表示为一种有向图(directed graph),或者称计算图(computation graph)。图中每一个运算操作(operation)是一个节点(node),节点之间的连接线称为边(edge)。计算图中的节点可以有任意多个输入和任意多个输出,每个节点都只有一个运算操作。在计算图中流动(flow)的数据被称为张量(tensor),故得名TensorFlow。 计算图示例如下:import tensorflow as tfb = tf.Variable(tf.转载 2021-05-31 06:35:55 · 333 阅读 · 0 评论 -
TensorFlow模型的保存和加载
将训练好的模型参数保存起来,以便以后进行验证或测试,这是我们经常要做的事情。tf里面提供模型保存的函数是tf.train.Saver模块。模型保存先要创建一个Saver对象:saver = tf.train.Saver()在创建Saver对象的时候,有一个参数经常会用到,就是max_to_keep,这个是用来设置保存模型的个数,默认为5,保存最近的5个模型。如果你想每训练一次(epoch)就想保存一次模型,则可以将max_to_keep设置为None或者0:saver = tf.train.Sa转载 2021-05-30 22:50:42 · 1701 阅读 · 0 评论