![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
tensorflow
tensorflow基础知识
wxsy024680
这个作者很懒,什么都没留下…
展开
-
tensorflow学习笔记——batch_size
batch_size要适中,太小或太大都不好1、如果batch_size太小,每轮迭代次数太多,而epoch又不能减少,因此训练速度变慢;同时,显存或内存利用率不高。2、如果batch_size太大,每轮迭代次数太少,在epoch不变的情况下,总的迭代次数不足,训练效果不好,想要达到好的训练效果,需要增加epoch,因此训练速度也会变慢;同时,显存或内存可能溢出。3、epoch关系到所有样本参与训练的次数,不能随意减少,总的迭代次数关系到权重参数优化的次数,也不能随意减少。...原创 2021-07-28 12:42:50 · 5293 阅读 · 0 评论 -
tensorflow学习笔记——边缘检测
如下卷积核具有边缘检测的作用,举例说明:[[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]import cv2import numpy as npimport tensorflow as tfinput_data = cv2.imread('zxc.jpg')weights_data = [[[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]], [[-1,-1,-1],[8,8,8],[-1,-1,-1]], [[-1,-1,-1],[-1,-1,-原创 2021-05-10 10:01:47 · 5370 阅读 · 0 评论 -
tensorflow学习笔记——快速理解精确率和召回率
精确率:检出为某类缺陷的样本中实际为该类缺陷的概率;召回率:实际为某类缺陷的样本中被检出为该类缺陷的概率;精确率和召回率越高越好原创 2021-04-14 01:03:54 · 4917 阅读 · 0 评论 -
tensorflow学习笔记——tfrecord文件的生成与读取
训练模型时,我们并不是直接将图像送入模型,而是先将图像转换为tfrecord文件,再将tfrecord文件送入模型。为进一步理解tfrecord文件,本例先将6幅图像及其标签转换为tfrecord文件,然后读取tfrecord文件,重现6幅图像及其标签。1、生成tfrecord文件import osimport numpy as npimport tensorflow as tffrom PIL import Imagefilenames = ['images/cat/1.jpg','im原创 2021-03-29 02:11:53 · 4996 阅读 · 1 评论 -
tensorflow学习笔记——获取训练数据集和测试数据集
训练神经网络模型之前,需要先获取训练数据集和测试数据集,本文介绍的获取数据集(get_data_train_test)的方法包括以下步骤:1 在数据集文件夹中,不同类别图像分别放在以各自类别名称命名的文件夹中;2 获取所有图像路径以及分类;3 将分类转为字典格式;4 将所有图像路径打乱;5 将所有图像路径切分为训练部分和测试部分;6 获取x部分6.1 获取图像;6.2 图像尺寸调整;6.3 图像降维;6.4 图像像素值取反;6.5 图像像素值归一化;7 获取y部分7.1 获取图像的原创 2021-03-22 09:59:42 · 7264 阅读 · 4 评论 -
tensorflow学习笔记——使用inception模型识别图像
下载inception模型import osimport numpy as npimport tensorflow as tfclass NodeLookup(object): def __init__(self): label_lookup_path = 'inception_model/imagenet_2012_challenge_label_map_proto.pbtxt' uid_lookup_path = 'inception_mode原创 2021-03-16 00:30:29 · 4894 阅读 · 2 评论 -
tensorflow学习笔记——下载inception模型
import tensorflow as tfimport osimport tarfileimport requests#模型存放地址inception_pretrain_model_dir = "inception_model"if not os.path.exists(inception_pretrain_model_dir): os.makedirs(inception_pretrain_model_dir)#模型下载地址inception_pretrain_model_原创 2021-03-14 12:23:36 · 5104 阅读 · 4 评论 -
tensorflow学习笔记——保存和重载训练结果
保存训练好的权重和偏置:# 定义saver,用于保存或重载训练好的权重和偏置saver = tf.train.Saver()with tf.Session() as sess: # 保存训练好的权重和偏置 saver.save(sess, 'net/net.ckpt')重载训练好的权重和偏置:# 定义saver,用于保存或重载训练好的权重和偏置saver = tf.train.Saver()with tf.Session() as sess: # 重载训练好的权重和偏置 saver.原创 2021-03-12 00:50:20 · 5175 阅读 · 0 评论 -
tensorflow学习笔记——搭建卷积神经网络
这里搭建了一个卷积神经网络,该网络仅应用于单一目标识别,网络结构如下表:以手写体数字识别为例,代码如下:# import osimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# 获取数据集# one_hot设置为True,将标签数据转化为0/1,如[1,0,0,0,0,0,0,0,0,0]mnist=input_data.read_data_sets('MNIST_data',原创 2021-03-11 09:34:00 · 4929 阅读 · 0 评论 -
tensorflow学习笔记——summary
神经网络像一个黑盒,我们无法解释清楚单个权重或偏置对输出的影响,但如果我们可以得到权重和偏置在训练过程中的变化趋势,对它们有一个宏观认识,也是不错的。运用summary就可以实现上述目的,具体如下:1、定义summary,如mean=tf.reduce_mean(w1)stddev=tf.sqrt(tf.reduce_mean(tf.square(w1-mean)))tf.summary.scalar(‘mean’,mean)tf.summary.scalar(‘stddev’,stddev)t原创 2021-03-09 09:30:30 · 5546 阅读 · 2 评论 -
tensorflow学习笔记——计算图
1、编辑with tf.name_scope(‘input’),将若干个变量打包起来并命名为input;2、编辑writer=tf.summary.FileWriter(‘logs’,sess.graph),将计算图保存在logs文件夹;3、运行Python代码,得到计算图文件;4、在命令行窗口运行tensorboard --logdir logs,得到一个网址;5、用谷歌浏览器打开该网址,即可查看计算图;import tensorflow as tffrom tensorflow.exampl原创 2021-03-09 00:52:18 · 5080 阅读 · 4 评论 -
tensorflow学习笔记——优化器
搭建模型时,可以选择收敛速度最快的优化器,以提升训练速度;输出结果时,建议每个优化器都尝试一遍,最后选择准确率最高的优化器。没有哪个优化器绝对好,只有尝试了才知道。import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# 获取数据集# one_hot设置为True,将标签数据转化为0/1,如[1,0,0,0,0,0,0,0,0,0]mnist=input_data.read_data_se原创 2021-03-08 20:54:03 · 5132 阅读 · 1 评论 -
tensorflow学习笔记——过拟合
对于神经网络过拟合问题,一般有以下解决方法:1、引入dropout,在训练的时候,让一部分神经元随机失活,增加网络稀疏性,有利于特征选择,防止过拟合;2、引入batch normalizatin,不仅对输入层的输入数据进行标准化(减均值,除标准差),还对隐藏层的输入数据进行标准化,防止过拟合;3、引入l1_regularization,在训练的时候,对损失函数做一些限制,在权重参数更新时,使很多权值参数等于0,增加网络稀疏性,有利于特征提取,防止过拟合;4、引入l2_regularization,在原创 2021-03-08 18:12:37 · 5179 阅读 · 1 评论 -
tensorflow学习笔记——损失函数
1、均方误差损失函数损失函数对权重的偏导与激活函数的梯度成正比。如果激活函数是线性的,可以使用这种损失函数,如果激活函数是S型函数,则不适合使用这种损失函数,原因如下:假如我们期望的输出值为1,A处离1较远,激活函数梯度也较大,优化器调整步伐也较大;B处离1较近,激活函数梯度也较小,优化器调整步伐也较小,这是合理的。假如我们期望的输出值为0,A处离0较远,激活函数梯度也较大,优化器调整步伐也较大;B处离0较远,激活函数梯度却较小,优化器调整步伐也较小,输出值需要很长时间才能调整到0,这是不合理的。原创 2021-03-08 16:28:11 · 5593 阅读 · 0 评论 -
tensorflow学习笔记——手写体数字识别
import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# 获取数据集# one_hot设置为True,将标签数据转化为0/1,如[1,0,0,0,0,0,0,0,0,0]mnist=input_data.read_data_sets('MNIST_data',one_hot=True)# 定义一个批次的大小batch_size=100n_batch=mnist.train.num_e原创 2021-03-08 01:09:42 · 5130 阅读 · 2 评论