- 博客(79)
- 收藏
- 关注
转载 ckpt学习下
TensorFlow的模型文件文件结构介绍:–checkpoint_dir | |–checkpoint | |–MyModel.meta | |–MyModel.data-00000-of-00001 | |–MyModel.index Tensorflow模型主要包括两个方面内容:1)神经网络的结构图graph;2)已训练好的变量参数。因此Tensorflow模型主要包含两个文件:.meta文件该文件保存了tensorflow完整的网络图结构,.meta文件是pb格式,包
2020-09-23 17:12:05 384
原创 理解StopIteration的异常
在讲循环对象的时候,曾提到一个StopIteration的异常,该异常是在循环对象穷尽所有元素时的报错。我们以它为例,来说明基本的异常处理。一个包含异常的程序:a = iter(range(5))try: for i in range(100): print(a.__next__())except StopIteration: print('here is end ', i)# 结果展示:'''01234here is end 5'''首
2020-09-21 17:08:27 7542
转载 Python之理解__new__和__init__的区别
很多同学都以为Python中的__init__是构造方法,但其实不然,Python中真正的构造方法是__new__。__init__和__new__有什么区别?本文就来探讨一下。class Person(object): def __init__(self, name, age): print("in __init__") self._name = name self._age = age p = Person("Wang", 33) 上面的
2020-09-19 15:22:26 224
原创 FocalLoss学习一下
FocalLossFocalLoss是对分类交叉熵损失函数的优化为什么能做难负样本挖掘呢?γ>0,会减少相对于好区分样本(就是负样本,也就是背景比较多的样本)的损失,而将重心转移到难区分的,而且比较容易误分类的样本(也就是正样本:背景不会占太多,或者叫难负样本:难区分的负样本,一般数据集中它们的数量少)上面来。下面来具体理解下。当预测概率值在0.6-1之间时,不管是预测物体还是背景,置信度比较高,也就是容易区分样本(远远大于0.5当然可信了)。当概率在0.5左右时,就比如特殊一点0.5吧,一
2020-09-13 16:15:22 388
转载 了解focal loss
Focal Loss理解 1. 总述Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。 2. 损失函数形式Focal loss是在交叉熵损失函数基础上进行的修改,首先回顾二分类交叉上损失:是经过激活函数的输出,所以在0-1之间。可见普通的交叉熵对于正样本而言,输出概率越大损失越小。对于负样本而言,输出概率越小则损失越小。...
2020-09-10 17:07:09 235
转载 ValueError: Object arrays cannot be loaded when allow_pickle=False
代码是Deep Learning with Python中的:from keras.datasets import imdb(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)错误最后一行如下Object arrays cannot be loaded when allow_pickle=Fal...
2020-07-20 10:23:09 326
转载 python中defaultdict用法详解
认识defaultdict:当我使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element] =value即,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错,如:1.png这时defaultdict就能排上用场了,defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,这个默认值是什么呢,下面会说如何使用defaultdictdefaul
2020-07-15 20:05:18 199
转载 tf.split 与 tf.squeeze 用法
看Char-RNN的代码时遇到这两个函数,记录一下备忘。先来看一下tf.split()函数,作用是分割tensor,将分割后的tensor放入一个list。split( value, # 输入的tensor num_or_size_splits, # 如果是个整数n,就将输入的tensor分为n个子tensor。如果是个list T,就将输入的tensor分为len(T)个子tensor。 axis=0, # 默
2020-07-14 19:58:21 276
原创 理解tf.clip_by_value()用法
tf.clip_by_value(A, min, max):输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。小于min的让它等于min,大于max的元素的值等于max。例如:import tensorflow as tf; import numpy as np; y = np.array([[8,2,1], [1,3,6]]) with tf.Session() as sess: print sess.run(tf.clip_by_value(y,
2020-07-13 17:15:17 585
转载 tensorflow slim库的使用
slim库的导入:import tensorflow as tfimport tensorflow.contrib.slim as slim常用函数:与tensorflow自带的函数相比,slim能够让我们不用重复写函数的参数。那么函数的参数写在哪里呢?核心方法就是slim.arg_scope。slim.arg_scopedef arg_scope(list_ops_or_scope, **kwargs) list_ops_or_scope:要用的函数的作用域,可以在需要使用的地方用@ad
2020-07-13 11:33:08 338
转载 pycharm中Mark Directory as 成 sources root 的作用
使用from…import添加非python的包时, 需要为python解释器指定搜索路径, 比如使用sys.path.insert(), 还可以指定PYTHONPATH, 我用的是PYTHONPATH, 编辑run的配置文件时突然看到"Add source roots to PYTHONPATH", 又突然联想到Mark Directory as, 于是就觉得把文件夹Mark Directory as成root就不用手动添加PYTHONPATH了, 果不其然将文件夹Mark Directory as成
2020-07-11 17:05:13 2011
转载 什么是fine-tuning?
什么是fine-tuning? 在实践中,由于数据集不够大,很少有人从头开始训练网络。常见的做法是使用预训练的网络(例如在ImageNet上训练的分类1000类的网络)来重新fine-tuning(也叫微调),或者当做特征提取器。 以下是常见的两类迁移学习场景:1 卷积网...
2020-07-03 16:27:33 190
转载 svm使用出现FutureWarning The default value of gamma will change from auto to scale in version 0.22
G:/workspace/Firmware-url-Detection/url_classfication/trainer_zgd.pyC:\Users\zgd\AppData\Roaming\Python\Python27\site-packages\sklearn\svm\base....
2020-06-29 17:14:23 456
转载 ValueError Unknown label type unknown
应该是标签数据集的类型出错了,那么使用dtype打印一下数据类型看看(不要使用type函数,这样会发现都是int类型的),发现这时候的标签数据类型是object,这样sklearn是无法识别的,所以使用astype(‘int’)进行强制转化即可:y = y.astype('int')...
2020-06-29 16:00:37 3194 1
原创 Anaconda简介及安装后相应的一些件的介绍
AnacondaAnaconda自带python的编译环境,而且在管理python的第三方库或第三方包时也是比较方便的。Navigator在Anaconda Navigator中,那个base(root)是系统默认的环境。就是根目录下的一个环境。自己可以再建一个环境(create),需要用的时候先在Anaconda navigator里面好像是先点一下,表示要用那个环境。然后去命令行里面cmd用命令激活那个环境,方法是:activate 环境名,然后就激活那个环境了,然后再输入Python,就可以
2020-06-23 09:39:21 781
原创 计算机视觉可能会用到的:数的取反操作,即a取反得~a,a可正可负
正数取反例如:a=60,60的二进制是0011 1100(最前面的0表示正数),,,(a取反~a ) 输出结果 -61 ,二进制解释:首先对数据的每个二进制位取反,即把1变为0,把0变为1,得 1100 0011(最前面的1表示负数),然后求在一个有符号二进制数的补码形式(方法是:负数的补码 = {原码符号位不变} + {数值位按位取反后+1}),也就是10111100,加一,就是10111101,即-61负数取反-2 二进制是110,取反是001,其补码还是001,即1x=-2,-x-1=1
2020-06-23 09:22:45 1326
原创 python之lambda,eval(),exec(),map函数的使用
1.匿名函数是函数的一种简单的实现方式。比如lambda# 匿名函数 lambda 定义# 形式def add(x, y): return x + yprint(add(2, 3)) # 5a = lambda x, y: x + yprint(a(2, 3)) # 5print(a(3, 4)) # 72.eval()函数一般不建议使用。因为它可能会带来一些程序方面的安全问题。# eval() 执行一个表达式print('10*2') # 10*2print(
2020-06-23 09:11:45 640
转载 Opencv 中 waitkey()& 0xFF,“0xFF”的作用解释
这几日学习OpenCV,刚碰到这个表达式时,对于0xFF的作用不太理解,难道下面两个语句还有区别?(Esc的ASCII码为27,即判断是否按下esc键)if cv2.waitkey(30)==27if cv2.waitkey(30)&0xff==27疑惑首先&运算即“and”运算。其次0xFF是16进制数,对应的二进制数为1111 1111。然后cv2.waitkey(delay)函数1....
2020-05-08 18:35:31 2321
原创 图片标注工具LabelImg的使用
安装方式是windows方式(下载labelImg.exe,不用安装,双击直接使用),没有用python方式。。。
2020-05-06 10:06:43 1130
原创 python3.7 -openCV安装与测试(Windows)
1.首先进行whl文件下载,下载地址是:https://www.lfd.uci.edu/~gohlke/pythonlibs/因为我安装的是python3.7版本,所以我下载的是opencv_python-4.2.0-cp37-cp37m-win_amd64.whl注意:安装时要下载与python版本相匹配的opencv文件,且opencv要安装后要复制到Anaconda3\Lib\site-...
2020-05-04 22:07:38 569
转载 pytorch必须掌握的4种边界Padding方法
卷积操作作为卷积神经网络的核心模块,在其计算过程中必须考虑图像“边缘像素”的卷积方式。查阅资料发现,我们可以采用“卷积之前进行边界填充”或“卷积之后进行边界填充两种方式”,同时边界填充的具体手段包含常量填充、零填充、镜像填充以及重复填充等。在具体分析各种Pad之前,先创建一个2dTensor用于测试后面的填充操作:x = torch.Tensor([[1, 2], [3, 4]])创建的Tenso...
2020-05-01 16:30:39 2706 1
转载 pytorch 之 __call__, __init__,forward
要学习pytorch,一个前提是 知道python calss中的**call__和__init**方法.简单的说就是:init: 类的初始化函数,类似于c++的构造函数call_: 使得类对象具有类似函数的功能。__init__比较好理解,现在主要看一下 __call__的功能示例:class A(): def __call__(self): print('i ...
2020-05-01 15:43:44 323
原创 tf.expand_dims()和tf.tile()
tf.expand_dims()和tf.tile()tf.expand_dims() 修改形状,数据不变tf.tile()import tensorflow as tfx1 = tf.constant(value=[1, 2, 3], dtype=tf.float32)x2 = tf.constant(value=[ [1, 2, 3], [4, 5, 6], ...
2020-04-01 17:05:12 512
原创 tensorflow查看形状XXX.get_shape()、numpy查看形状XXX.shape tf.matmul(a, w)+b详细解释(CNN全连接相关的)
import tensorflow as tfa = tf.constant((1.0, 2.0, 3.0, 4.0), dtype=None, shape=(1, 4), name='a')w = tf.ones(shape=[4, 2], dtype=tf.float32, name=None)b = tf.ones(shape=[2], dtype=tf.float32, name=...
2020-03-25 22:16:30 396
原创 CNN中做归一化用到的相关API(自己的小总结:tf.nn.moments()函数理解) 以及CNN中NHWC转NCHW的方法
Note1:CNN中NHWC转NCHW的方法:比如卷积层输出的net形状为:[2, 3, 3, 4]即:NHWC为[2, 3, 3, 4]N:一个batch内图片的数量。H:垂直高度方向的像素个数。W:水平宽度方向的像素个数。C:通道数现为了做BN,想先将NHWC转为NCWH=[2, 4, 3, 3]方法呢?可以使用TensorFlow中的tf.transpose函数实现!n =...
2020-03-25 16:58:49 647
原创 tf.truncated_normal_initializer()和tf.random_normal_initializer()的区别和使用
两个初始器的使用和区别tf.random_normal_initializer:正态分布tf.truncated_normal_initializer:截取的正态分布
2020-03-25 00:39:35 4187
转载 tf.nn.moments()函数解析(最清晰的解释)
tf.nn.moments()函数用于计算均值和方差。# 用于在指定维度计算均值与方差tf.nn.moments( x, axes, shift=None, # pylint: disable=unused-argument name=None, keep_dims=False)参数:x:一个Tensor,可以理解为我们输出的数据,形如 [b...
2020-03-25 00:09:41 4622 1
原创 CNN过程举例(手写版)
# 定义一个网络结构: input -> conv1 -> relu1 -> pooling1 -> conv2 -> relu2 -> pooling2 -> FC1 -> FC2手写CNN过程:
2020-03-21 00:32:52 410 2
原创 CNN(多种CNN结构,为什么用引入CNN,卷积层不考虑过拟合)
1.多种CNN结构好多CNN结构都是在原来基础上做了深度和宽度方向上的扩展,从而将网络结构变得复杂,同时通过这种方式使模型效果变得好一点。常见的CNN结构有LeNet-5、 AlexNet、ZFNet、VGGNet、GoogleNet、ResNet、DenseNet、SENet、 Residual Attention Networks、MobileNet、ShuffleNet等等。从Goog...
2020-03-20 17:56:15 585
原创 CNN中窗口,通道,feature map,激活函数 理解
CNN中的窗口理解窗口大小,就是局部感知视野图片的深度depth,也叫channeldepth深度:图片是从几个方面进行描述的。feature map一个卷积核相当于从一个方面考虑这个图像具有什么特征,10个卷积核就是从10个方面去描述图像,然后得到10个feature mapCNN中的激活函数ReLU效果不好的话再考虑用Leaky ReLUMaxout不是纯粹的激活函数,但可以把...
2020-03-20 17:55:03 727
原创 BP体系
BP体系小理解不管什么神经网络,底层的求解。都属于BP这个体系,只是有时候稍微改个名字,比如BPTT,属于BP体系,用反向传播过程,进行参数更新,过程就是求导的过程。...
2020-03-20 17:54:18 817
原创 CNN基础的小总结
总结CNN中,卷积层主要目的是提取图像的局部高阶特征信息,其他不考虑。在激活层,由于卷积层提取的是线性的特征。所以需要做一个非线性的转换。如果不做转换的话,多层还是相当于一层,没有什么区别。池化层可以理解为对前面卷积层提取那么多的局部特征信息做一个压缩,压缩的过程中会把一些噪声特征信息,包括冗余特征信息给剔除掉。使模型相对稳定一些。迭代速度更快一些。也可以稍微缓解一些过拟合的问题。前面提取的是...
2020-03-20 17:44:38 158
原创 CNN中用到的灰度图和RGB图的理解
灰度图片和RGB图片灰度图像是一个方面,彩色图像是三个方面灰度图:把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。(数字越大越接近白色,越小越接近黑色 )RGB图:是通过对红R、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色。(每像素颜色16777216(256 * 256 * 256)种)...
2020-03-20 17:39:27 3549
原创 对CNN中池化层的理解
14.为什么要引入池化层?例如一张图片中,有天空。天空那一大片区域颜色是很接近的。用卷积层提取出的局部特征也很相近。这样的话会造成特征信息的冗余。带来计算量大的问题。如何将冗余的信息删除,那就要用到池化层。池化层的作用主要是:为了提高重要的特征信息,压缩特征,降低计算量,缓解过拟合的情况。池化有最大池化和最小池化(其中最小池化自己根据最大池化进行改编得到)最大池化认为每个窗口中值越大,越...
2020-03-20 17:37:15 1977
原创 对CNN中padding零填充的理解
11.padding为什么用padding进行填充?原因:2个一:卷积的时候,希望图像大小不发生变化;二:有的时候可能原始图像是除不尽的,如果不填充的话,余的像素就直接丢弃了,这样信息可能会丢失。那为了防止信息丢失,我们做一个填充。注意:零填充填几层卷积自己会自己计算的(计算是在滑动窗口滑动之前就计算好的)。也就是说:不管哪种情况,padding的取值,先计算好,然后窗口才滑动 。。。 ...
2020-03-20 17:29:35 12351 1
原创 tf.train.get_or_create_global_step()和tf.trainable_variables()用法
tf.train.get_or_create_global_step()这个函数主要用于返回或者创建(如果有必要的话)一个全局步数的tensor变量。参数只有一个,就是图,如果没有指定那么就是默认的图。tf.trainable_variables()获取参与模型训练的变量值import tensorflow as tfglobal_step = tf.train.get_or_creat...
2020-03-19 23:30:41 3562
原创 os.path.join的用法
os.path.join()函数:连接两个或更多的路径名组件import oslacation1 = './models'lacation2 = 'e.txt'Path = os.path.join(lacation1, lacation2)print('Path = ', Path)'''执行结果如下:Path = ./models\e.txt'''...
2020-03-19 21:48:31 214
原创 tf.app.flags.DEFINE_XXX和tf.app.flags.FLAGS
tf.app.flags.DEFINE_XXX()就是添加命令行的optional argument(可选参数)而tf.app.flags.FLAGS可以从对应的命令行取出参数import tensorflow as tf# tf.app.flags.DEFINE_xxx()就是添加命令行的optional argument(可选参数)# 而tf.app.flags.FLAGS可以从对应...
2020-03-19 12:45:16 235 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人