TensorFlow
文章平均质量分 90
TensorFlow
小鹏AI
深度学习算法工程师,主攻深度学习模型优化部署,辅攻图形图像算法调优。
软件设计师、英伟达Jeston Nano专家认证。
展开
-
深度学习 tf和np的float32和float64为什么不能通用
标量和张量的区别标量比较就是比较标量的本事而张量的比较是比较矩阵,我们不能确定矩阵中所有的元素的长度都是一样的如果在进行比较的时候假设矩阵A和矩阵B比较矩阵A是float32的矩阵B是float64的如果两者要进行相加的时候,需要将每一个张量中的元素靠近另一个张量但是矩阵的元素过多,不能很好的达到统一因此张量中的类型需要相同...原创 2020-07-23 09:57:11 · 2302 阅读 · 2 评论 -
TensorFlow的基本使用(定义常量、变量、四则等)
# -*-coding:utf-8-*-import tensorflow as tfimport numpy as np# 定义常量c1 = tf.constant(123,dtype=tf.float32)c2 = tf.constant(123,dtype=tf.float32)# 四则运算c1_c2_a = tf.add(c1, c2)c1_c2_b = tf.subtract(c1, c2)c1_c2_c = tf.multiply(c1, c2)c1_c2_d = tf原创 2020-06-11 16:45:53 · 544 阅读 · 0 评论 -
分析tf.reshape(v3, [2,2,3,1,3,1,1,1,1])中[2,2,3,1,3,1,1,1,1]是什么形状?
tf.reshape(v3, [2,2,3,1,3,1,1,1,1])今天学习TensorFlow时候,接触到了张量的形状的变换问题,变换的这个问题比较好理解(理解如下)reshape(tensor, shape, name=None)tensor:被调整维度的张量shape:要调整成什么形状然后结果会返回一个新形状的张量了。当然,我们也需要注意到,形状中的值可以填写-1的,这个-1表示的是可以自动计算这个维度tf.reshape(v3, [2,2,-1,3])对于更改成的.原创 2020-06-12 16:38:29 · 334 阅读 · 0 评论 -
tf.nn库和tf.layers库的比较
tf.nn库提供神经网路相关的操作激活函数(relu、Sigmoid、tanh)dropout层卷积操作池化操作normalizationlossesevaluationtf.layers库主要提供的高层的神经网络,主要和卷积相关的。input()average_pooling1d()average_pooling2d()average_pooling3d()batch_normalization()conv1d()conv2d()conv2d_transpose原创 2020-09-21 17:53:35 · 648 阅读 · 0 评论 -
Tensorflow 拟合sinx、cosx以及square函数
导入需要的模块import numpy as npfrom matplotlib import pyplot as pltimport tensorflow as tf定义需要的参数类class Config: def __init__(self): self.save_path = './model_sin/sin_cos' # 训练结果保存的路径 self.lr = 0.001 # 学习步长 self.epoches = 1000原创 2020-06-22 09:36:35 · 895 阅读 · 0 评论 -
TensorFlow 使用样本的方式来实现手写数字识别
定义手写数字类应用框架class MNISTApp(): def train(self): pass def predict(self): pass主函数框架if __name__ == "__main__": app = MNISTApp() app.train() app.predict()原创 2020-06-16 17:20:20 · 404 阅读 · 0 评论 -
TensorFlow softmax的使用
将十个数字转换为十个概率,并且十个概率的和是为1的tf.softmax(x,10) # 十个概率,十个概率的和为1如何将获取的概率与标签进行相关联?可以使用的方法:交叉熵点积平方差以交叉熵为例:概率标签0.500.310.20交叉熵的做法是:将概率取对数,得到的结果lll为负数将lll与标签进行相乘,来获取需要的预期值当概率为1的时候为0,也就要求的最小值了缺点就是:当需要的概率为1时候,其他的概率为0,这样会导致其他的概率无解原创 2020-06-15 18:35:58 · 412 阅读 · 0 评论 -
TensorFlow 使用样本进行求解平方根
之前用的是使用迭代进行直接的求解但是深度学习最常用的方法是:根据样本学习收集要解决问题的事件样本(一个x对应一个y【x多个,y一个】)平方根的样本是比较好收集的,比如:0.1的样本就是0.01;0.2的样本就是0.04,等等通过样本建立网络,输出作为平方根(更直接,更适应样本)之间的解法是求解argminf(x)argminf(x)argminf(x)目前的解法是求解argminf(x,p)argminf(x,p)argminf(x,p)求的值是p,而不是xp就是要优化的东西通过样本来原创 2020-06-16 15:51:33 · 660 阅读 · 0 评论 -
TensorFlow在拟合函数的时候,为什么需要进行两个全连接并且加上一个激活函数呢?
问题:TensorFlow在进行拟合函数的时候,为什么需要进行两个全连接并且加上一个激活函数呢?首先,我们先提到三层神经元网络三层神经元网络:神经网络的层数,指定的是能够产生训练参数的为一次,像激活函数就不是一层输入层-----隐藏层-----输出层隐藏层的神经元是输入层的神经元的线性变换从最简单的说起如果输入只有一个神经元其中:z=ax+bz = ax + bz=ax+b 是一条直线隐藏层的一个神经元就是一条直线而激活函数的作用(relu)就是将这条直线经过x轴下半部分全部都删原创 2020-06-17 11:28:39 · 769 阅读 · 1 评论 -
TensorFlow 使用tensorboard进行手写数字识别准确率的图像化显示
手写数字识别程序本文基于上面这篇文章,将打印出的损失函数值和预测值进行图像化的显示实现的步骤在张量中定义一个汇总的张量self.precise_summary = tf.summary.scalar('precise',self.precise)self.loss_summary = tf.summary.scalar("loss",self.loss)在训练中定义一个filewriter(指明计算图)writer = tf.summary.FileWriter(cfg.logdir, se原创 2020-06-22 10:27:58 · 813 阅读 · 0 评论 -
使用TensorFlow求平方根的案例
今天弄了一点TensorFlow的知识,寻思嘚瑟一下使用TensorFlow求平方根曾经使用过梯度下降法来求解平方根来着我们先回顾一下:如何使用梯度下降法来求平方根?分为以下步骤:定义函数:y = lambda x : x*x定义损失函数:loss = lambda x : (y(x) - n)**2对损失函数进行求导:dloss_dx = lambda x : 2 * (y(x) - n) * 2 * x使用梯度下降法求△x△x△x:dx = lambda x,lr : -lr * dl原创 2020-06-12 18:19:37 · 1734 阅读 · 0 评论 -
TensorFlow 精确率和召回率
精确率按照输出来算、召回率按输入来算男女605010402020精确率:5050+20\frac{50}{50+20}50+2050召回率:2020+20\frac{20}{20+20}20+2020综合召回率和综合精确率是相等的代码实现:利用样本进行手写数字的识别–计算精确率...原创 2020-06-17 09:05:24 · 1026 阅读 · 0 评论 -
TensorFlow 卷积到底是什么?
卷积是对两个实函数的一种数学运算。例如:我们用一个激光传感器来追踪一艘宇宙飞船的位置激光传感器给出了一个单独的输入x(t)x(t)x(t):表示飞船在时刻ttt的位置这就意味值我们可以在任意的时刻从传感器中读出飞船的位置那么,现在我们的传感器受到了一定程度的噪声干扰。为了降低飞船位置的低噪声估计我们对得到的测量结果进行平均我们不难想到:时间上越近的测量结果越相关,所以我们采用一种加权平均的方法,对于最近的测量结果赋予更高的权重。我们可以采用一个加权函数w(a)w(a)w(a)来实现其中原创 2020-06-22 12:05:46 · 237 阅读 · 0 评论 -
TensorFlow 使用卷积的进行手写数字的识别准确率的验证
导入需要的包import numpy as npfrom matplotlib import pyplot as pltimport tensorflow as tffrom tensorflow.examples.tutorials.mnist.input_data import read_data_sets 定义需要的配置信息类class Config: def __init__(self): self.save_path = './models/P34/conv原创 2020-06-22 10:13:56 · 279 阅读 · 0 评论 -
TensorFlow 使用VAE模型进行手写数学图片的创建
如何使用VAE模型进行手写数字图片的创建呢?其实主要依赖于两个发生器,一个是编码,一个是解码实现步骤如下:将数字手写的图片库传入到VAE中经过编码器(卷积神经网络)得到一个语义值(包括手写数字识别的特征,这里我们设置4个维度,分别代表:粗细,弯曲程度等)将获得的四个值进行平均数和标准差的求解,(目的是为了符合正态分布,为什么使用正态分布做随机数,因为正态分布形成的随机数比较精准)使用随机分布发生器进行随机数的生成将获得的随机数进行解码操作,(就是反卷积操作)最后通过全连接得到想要的图片原创 2020-06-29 13:53:00 · 721 阅读 · 0 评论 -
TensorFlow with方法和tf.variable_scope联合使用的原理
实例代码with tf.variable_scope(get_name()) as scope1: v2 = tf.get_variable('v2', shape=[4,9],initializer=tf.constant_initializer()) with tf.variable_scope(get_name()) as scope2: v3 = tf.get_variable('v3', shape=[4,9],initializer=tf.constant_initializer())原创 2020-07-01 14:51:20 · 5279 阅读 · 0 评论 -
TensorFlow2.0实战:Cats vs Dogs
这意味着在训练过程中,我们只会训练新添加到顶部的网络层,而在网络底部的权重值不会发生变化。一旦我们执行了数据划分,我们就开始计算训练样本数量,然后调用辅助函数来为训练准备数据。我们一旦创建了这些模型,我们就需要修改这些模型顶部的网络层,使之适用于我们的具体问题。由于我们只训练了顶部的几层网络,而不是整个网络,所以训练这三个模型只用了几个小时。在我们开始整个训练过程之前,让我们思考一下,这些模型的大部头其实已经被训练过了。在这之后,我们需要做的仅仅是实例化这个类的对象,然后载入数据即可。原创 2023-01-04 11:38:26 · 964 阅读 · 0 评论 -
TensorFlow one_hot()
0 ------> [0,0,0,0,0,0,00,0,1]1 ------> [0,0,0,0,0,0,00,1,0]i ------> [0,0,0,i,0,0,00,0,0]决定向量的长度的是深度depthi是多少,就从右往左数第几个数字是1如果不使用one_hot()数值就是【0–9】从0-9 数值大拟合一个函数不论是一个样本还是一个参数值最好离0越近越好最好是-2到2之间或者-1到1之间绝对值不要随便的大于2如果使用【0-9】,标签的值就大于2了,不是很好原创 2020-06-15 18:17:04 · 162 阅读 · 0 评论 -
TensorFlow 使用多项式进行sin函数的拟合操作
定义一个主函数,对sin函数进行显示:if __name__ == "__main__": samples = 200 xs = np.random.uniform(-np.pi, np.pi, [samples]) xs = sorted(xs) ys = sorted(ys) # 使用matplotlib进行图像的显示 plt.plot(xs, ys) plt.show()在主方法中调用SinApp类app = SinApp(Config())with app: xs_tra原创 2020-06-17 13:50:54 · 1418 阅读 · 0 评论 -
Tensorflow网络模型分析梳理
看一个简单例子,假设我们需要在训练好的VGG网络使用图,并且修改最后一层,将输出改为2,用于fine-tuning新数据。第四个和第五个参数是我们重复的每一层的卷积核数量和大小,第五个就是scope,可用于指定这一层的变量的范围。关于冻结部分层的做法:我们只需要在指定优化器的时候,将我们需要训练的层的变量作为。第一个参数是我们的输入,第二个参数是我们重复的次数,第三个则是我们要用的层。的意义是忽略那些在定义的模型结构中可能存在的而在预训练模型中没有的变量。原创 2023-01-04 10:57:47 · 747 阅读 · 0 评论 -
TensorFlow 手写数字识别——将获取到的图片按照指定的方式显示
需求:从MNIST数据库中获取20张图片,并按照十行两列的形式进行显示导入需要的包文件from tensorflow.examples.tutorials.mnist.input_data import read_data_setsimport numpy as npimport cv2导入文件path = "./MNIST_data"ds = read_data_sets(path)获取二十张训练图片img,lab = ds.train.next_batch(20)原创 2020-06-15 16:08:31 · 379 阅读 · 0 评论 -
TensorFlow 更改张量的形状以及转置
首先我们定义一个v3变量v3 = tf.get_variable('v3', shape=[4,9],initializer=tf.constant_initializer())查看v3的形状>>>v3.shapeTensorShape([Dimension(4), Dimension(9)])定义v4更改v3的形状v4 = tf.reshape(v3, [2,2,3,1,3,1,1,1,1])查看v4的形状>>>v3.shapeTensorSh原创 2020-06-12 17:17:11 · 2198 阅读 · 2 评论 -
TensorFlow dense全连接的使用
定义全连接自己定义全连接的时候,通常是下面这样x = (....)w = (....)b = (....)matmul(w,x) + brelu~很是麻烦,我们可以使用TensorFlow自带的功能来做tf.layers.dense(全连接的参数,全连接相乘的第二个维度,激活操作) # 也叫密度链接def dense( inputs, units, # input:输入,units:输出 activation=None, # 使用什么激活函数 use_bias原创 2020-06-15 18:24:11 · 1043 阅读 · 0 评论