
python
文章平均质量分 51
_吟游诗人
在昨天的未来里活成回忆
展开
-
简单Python函数将SCI论文中WORD版参考文献改为LaTeX格式
投出的某sci论文被reviewer指出公式的format不大行,其实自己之前在用word调的时候也发现了这个问题,于是打算改头换面,使用latex来重新写一遍。而LaTeX的引用格式和word是不一样的(至少调格式的方式不同),bibtex是很常用的一种方式了,但是出于某些原因十分赶时间,对文中五十余篇论文去重新找各自的bibtex格式,然后再挨个照着之前word版补充一些东西,实在太费时间。那么如何“废物利用”呢,即将原来的word版的已经写好的内容直接copy过来呢?word版的内容拿过来自然没问题原创 2021-04-04 23:24:05 · 1720 阅读 · 0 评论 -
tf.gather,取指定维度多个索引的数据
tensorflow和numpy在数据处理上语法相似但又不完全一样,比如在numpy中想取指定维度的多个指定索引所指向的数据时,直接用一个列表保存索引就能直接取,比如:# b的shape为[2, 3, 2]b = np.array([[[1, 2], [2, 3], [3,4]], [[4, 5], [5,6], [6, 7]]])a = [0, 1, 2]# 假若要取b的第2个维度(从1算起)的以a为索引的数据,只需写成如下形式b[:, a, :]但是若b是tensor形式,则上述操作会报错原创 2020-07-03 12:11:29 · 2055 阅读 · 0 评论 -
python多继承及其super的用法
python也具有多继承的功能,而同样的,大家能想到多继承必须要引入一些特定的方法来准确调用子类或基类的重载、重写的方法,否则会出现混乱。本文参考Multiple inheritance in Python对该问题进行简要论述。如下图描述了一个简单的类继承关系下面是上面类图的代码,Class1、Class2、Class3都分别包含一个m方法,class Class1: def m(self): print("In Class1") class Cl原创 2020-06-26 08:59:00 · 1001 阅读 · 0 评论 -
pandas的DataFrame的[]和[[]]的区别
对于一个DataFrame类型的数据,可以用[]和[[]]来取其某一列或某几列(仅限[[]]才能取某几列)。从[]只能取某一列就能看出,这个取出来的是Series,而[[]]取出来的是DataFrame类型的。原创 2020-06-13 16:42:09 · 2130 阅读 · 0 评论 -
ValueError: Attempt to convert a value (1) with an unsupported type xx to a Tensor
如题所述问题,其本质是tensorflow版本不兼容的问题,但是为了一个错误去更新tensorflow版本,往往会消耗较长时间,而且说不定会引起其他地方依赖的问题。关于该问题可以考虑从不同角度进行考量,迂回解决。比如我在实验中,在使用a == None时出现了该问题,其中a为一个tensor,那么既然不能直接判断,那么可以根据其类型进行判断,即改为type(a) == type(None)即可。关于其他类型的问题,可以考虑通过对其中某个值、或者shape、dtype等进行判断,从另一个角度解决问题。原创 2020-06-02 20:01:39 · 7154 阅读 · 1 评论 -
python中*的用法
python中*是非常常见的一个运算符,它主要有以下几个功能:乘法运算符;函数形参表示可变参数;函数实参代表tuple;序列解包为tuple;zip解包运算;参考资料:Python3 * 和 ** 运算符Python zip() 函数乘法运算符在Python中,*表示乘法,**表示次方,这个不必多说。形参*在python中做函数形参,可以表示一个可变长度的序列,不过是t...原创 2020-04-21 09:48:42 · 2216 阅读 · 0 评论 -
python列出文件夹下所有文件名
用python获取指定文件夹下所有文件名很简单,使用os.walk()方法dir_path = '../../data/'for root, dirs, files in os.walk(dir_path): print(files)其中files是一个list,保存的是该文件夹下所有文件的文件名,别看这是个for循环,但其实这个循环只执行了一次,即如果将上面代码中的print(file...原创 2020-03-19 15:11:16 · 1432 阅读 · 0 评论 -
module 'sklearn' has no attribute 'svm'
在使用sklearn时有时会出现如下的问题,而且可能不仅仅是svm,可能是其他的什么内容module 'sklearn' has no attribute 'svm'如果确定没有拼写错误,那么就是下面这种情况,在import用的是import sklearn,而不是from sklearn import xxx,sklearn不会自动将其下的所有库都导入进去,因此需要按需自行导入。这是错误...原创 2020-02-06 09:45:01 · 5295 阅读 · 0 评论 -
sklearn的SVM的decision_function_shape的ovo和ovr
SVM本是二分类的分类算法,而由于其直逼神经网络的强大性能,因此也广被应用于多分类领域,这ovo和ovr就是多分类时需要进行选择的两种不同策略。ovo:one versus one,一对一。即一对一的分类器,这时对K个类别需要构建K * (K - 1) / 2个分类器ovr:one versus rest,一对其他,这时对K个类别只需要构建K个分类器。参考资料:Multi class o...原创 2020-02-05 17:47:02 · 7011 阅读 · 1 评论 -
Can not squeeze dim[1], expected a dimension of 1
遇上如题所示问题,多半是因为使用了sparse_categorical_crossentropy作为激活函数这会出现在分类问题中,这个激活函数要求如下:labels vector must provide a single specific index for the true class for each row of logits也就是说,你给的真实输出值,得是一个索引index而不...原创 2020-02-05 15:21:15 · 4701 阅读 · 9 评论 -
python/numpy随机选取训练集/测试集索引
在训练模型中, 往往需要对数据集进行处理,从数据集中随机选取部分数据作为训练集,而另一部分数据作为测试集,一个常用的方法是随机选取索引,下面介绍两种从0~n中随机选取x个不重复索引的方法。注意下述两种方法选出来的都是整数。方法一、用python的randomimport randomdef getRandomIndex(n, x): # 索引范围为[0, n), 随机选x个不重复 ...原创 2020-02-05 11:39:33 · 9946 阅读 · 0 评论 -
tensorflow2.0 - 保存模型(含自定义模型的保存)
tensorflow2.0保存模型的方式有很多,这里只介绍两种。一、 使用官方模型这种情况可以直接保存整个模型,如下所示,可以将模型保存为HDF5文件# 创建模型实例model = create_model()# 保存模型到HDF5文件model.save('my_model.h5')# 读取模型model = keras.models.load_model('my_model.h...原创 2020-02-04 15:17:56 · 6220 阅读 · 9 评论 -
numpy数组存入文件与取出文件以及注意事项(tofile和fromfile)
我们知道numpy的array是可以保存到文件的,一个常用的做法是通过to_file()保存到而进行.bin文件中,然后再通过from_file()从.bin文件中将其读取出来,下面看一个例子。如下图所示spatiallyRepresentation是一个二维numpy数组,其shape为[31762, 8]接下来将其存入文件中,使用tofile方法即可,参数填入想要保存到的文件路径,然后使...原创 2020-02-04 14:39:37 · 10106 阅读 · 0 评论 -
(四)tensorflow2.0 - 实战稀疏自动编码器SAE
前文已经介绍完了tensorflow2.0自定义layer、model、loss function,本文将结合前述知识,搭建一个稀疏自动编码器SAE。先简单介绍稀疏自动编码器SAE,其架构如下图所示(图源网络,侵删),三层结构,输出层应尽量和输入层接近,其重点在于中间的隐藏层,隐藏层将数据进行了重新编码,这样做的目的是获得输入数据更好的数据表示。在普通自动编码器中,往往要求隐藏层元素个数要比输...原创 2020-02-03 13:13:55 · 6229 阅读 · 19 评论 -
(三)tensorflow2.0 - 自定义loss function(损失函数)
前文分别讲了tensorflow2.0中自定义Layer和自定义Model,本文将来讨论如何自定义损失函数。(一)tensorflow2.0 - 自定义layer(二)tensorflow2.0 - 自定义Model自定义损失函数有两种情况,一种比较简单,而另一种稍显复杂。先来讨论第一种简单的情况,即不需要额外的参数。什么叫额外的参数呢?损失函数有两个默认参数,分别为实际输出、预测输出...原创 2020-02-03 12:23:34 · 20419 阅读 · 3 评论 -
(二)tensorflow2.0 - 自定义Model
前文写了如何使用tensorflow2.0自定义Layer,本文将讲述如何自定义Model,并将前述的Layer应用到本Model中来。(一)tensorflow2.0 - 自定义layer自定义模型也比较简单,只是需要搞清楚Model中各部分的作用及执行流程即可。由于本例中将使用前文中的自定义Layer,因此先将其代码贴过来以便查阅,没看过前文的也没关系,不影响对自定义模型的理解。im...原创 2020-02-03 11:56:23 · 6032 阅读 · 11 评论 -
(一)tensorflow2.0 - 自定义layer
最近在用tensorflow2.0搭建一个简单的神经网络,虽然结构简单但是由于对自定义有要求,官方提供的layer和model不能满足要求,因此需要自行对layer、model、loss function进行自定义。由于tensorflow2.0发布不久,国内相关文章较少,我便决定写上这一系列文章。本文讨论tensorflow2.0中如何自定义layer。本文不讨论tensorflow1和2在...原创 2020-02-03 10:56:54 · 5684 阅读 · 0 评论 -
tensorflow2.0中Layer的__init__(),build(), call()函数
最近在实验中,需要用到tensorflow建立一个简单的模型,但鉴于部分要求比较苛刻,不能直接使用其内置的layer,因此需要自定义一个layer类,这便涉及到了对__init__(), build(), call()这三个函数的理解先看官方手册中使用了Layer中的这三个关键函数的一个简单的实例:class MyDenseLayer(tf.keras.layers.Layer): def...原创 2020-01-31 22:07:24 · 15251 阅读 · 6 评论 -
python中__init__和__call__的区别
python类中,__init__和__call__方法都是用来初始化类的,但是它们之间存在一些区别。__init__是用来在初始化类的对象时被调用,同时可以传入一些参数。__call__用来在调用该对象时被触发。具体可以看下面的例子class A: def __init__(self): print "init" def __call__(self): print ...原创 2020-01-31 21:30:39 · 1013 阅读 · 1 评论 -
scrapy在start_requests中传入参数给parser
scrapy在start_requests中发出请求时,需要传入一些参数进行动态控制。为保证scrapy的请求的并发性,将其改为串行执行显然严重影响效率,因此不考虑采用全局变量的方法。因此可以使用在scrapy.Request中加入meta数据的方式向parse传入参数,如下代码的请求中加入了meta元素,包含regionId字段,可在parse中解析到 def start_request...原创 2020-01-17 10:55:38 · 2009 阅读 · 0 评论 -
判断一个点是否在多边形区域内部 / 判断一个给定位置是否位于某个城市内部
目前实验中有个需求,即给定一个经纬度,判断其是否处于某个城市内部。本来是想使用Google Earth的接口,然而谷歌一直不通过我的开发者账号申请,遂自己写了一个程序来实现该功能。首先一个城市的轮廓必然是多边形的,那么得先获取该多边形的每个点的坐标,即城市多边形边界的表示。怎么找城市边界的坐标呢?如下图所示,下图来自于:Getting polygon boundaries of City in...原创 2020-01-16 10:43:43 · 1739 阅读 · 3 评论 -
scrapy爬取页面不完全的解决办法
最近在使用scrapy来制作爬虫以爬取一些网站上的信息,但是却出现了一个很奇怪的问题,即在网页中打开待爬取的URL,并在网页源代码中定位了某些待爬取的元素,但是当使用scrapy爬取数据时,却发现报错了,而错误竟然是所爬取到的网页中并没有我在浏览器中看到的元素,即对于同一个URL,爬取到的页面和我在浏览器中打开所看到的页面不一样!在反复确认CSS类选择器没写错,爬虫所爬取的URL没有被重定向到另...原创 2019-12-25 23:41:59 · 5347 阅读 · 0 评论 -
module 'tensorflow._api.v2.train' has no attribute 'rmspropoptimizer'
tensorflow1.X的版本使用rmspropoptimizer的调用方式为tf.train.RMSPropOptimizer()然而去看新版官网:https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/RMSprop?version=stable当tensorflow2.X想使用该优化器时,其调用方式为:tf.opti...原创 2019-12-24 20:37:26 · 8183 阅读 · 1 评论 -
tf.image.resize处理后的图片无法使用plt.imshow正常显示
在使用tensorflow对图片进行预处理的时候,我使用了tf.image.resize这个函数将原始图片tensor转换成100×100的固定大小,暂且不讨论其压缩方式是否合理,但是在使用plt.imshow对其处理过后的图片进行显示时却出现了很奇怪的问题,即图片无法正常显示。具体表现为:原始图像为:处理后显示的图像如下,仅包含一些不明所以的像素点,这显然不是我们需要的:然后去查看re...原创 2019-12-24 18:47:18 · 957 阅读 · 1 评论 -
如何将tensor大于某个值为1,小于某个值为0
方法很简单,定义一个简单的函数,imgTensor是传入的需要转换的tensor,boundary是这个临界值,即大于boundary的值设为1,小于boundary的值设为0。本函数使用tf.where来实现,那么很容易可以看出我们可以任意设置tensor大于某个值(或小于某个值)时的值,只需要将下面代码中的tf.ones_like(或:tf.zeros_like)改成tf.fill()来构造一...原创 2019-12-24 16:12:35 · 12107 阅读 · 2 评论 -
Blas GEMV launch failed: m=3, n=10000
在使用tensorflow处理图片的时候,出现了如题所示错误。本次运行使用了独显进行计算,而错误原因是因为同时运行了多个占用显卡运行资源的程序!比如同时运行了好几个jupyter的kernel,或者在pycharm中选择了run with python console且同时开启了多个console窗口,或者在运行jupyter的时候又运行了pycharm,就会造成这种问题。因此解决办法就是:只...原创 2019-12-23 22:40:02 · 1933 阅读 · 4 评论 -
python将两个列表对应成为字典
实现python中将两个列表对应成字典,常用的方法需要借助zip函数下面举个很简单的例子a = [1,2,3]b = ['a', 'b', 'c']dict(zip(a, b))输出为下面简单介绍下zip函数,下图是zip自己的介绍,可以看到它有一个__next__()方法,返回一个元组,这个元祖就是输入参数中给定的列表的第i个元素的组合,每调用一次__next__()都会返回下一...原创 2019-12-23 11:57:03 · 1815 阅读 · 0 评论 -
Scrapy307重定向
最近在用Scrapy写爬虫,但是爬取有的网站时会出现307重定向的错误,使得无法爬取到正确网站,这往往是因为原网站采用了反爬虫机制导致的。在StackOverFlow上有人提出了这个问题:scrapy 307 redirects to same page这里的答案指出了307是Cookie的问题,它的建议是打开Cookie,并需要自己分析哪些是网站真正需要的用来鉴别是机器访问还是认为访问的数据...原创 2019-12-22 16:54:29 · 1240 阅读 · 0 评论 -
scrapy- invalid hostname: 'http'
在windows上使用scrapy shell命令时,出现了如题所示的错误,官网已经给出了解释将单引号改成双引号即可。原创 2019-12-19 15:09:49 · 366 阅读 · 0 评论 -
Ubuntu 16.04下切换python版本
本文转载自:https://blog.csdn.net/beijiu5854/article/details/77897767Ubuntu16.04下完美切换Python版本(亲测)对于ubuntu 16.04,由于本身是自带python,这样就减少了在windows下的下载和环境变量配置,非常不错。但是他本身是自带两个版本的python,2.X和3.X,两个版本,两个版本默认的是使用2.X,...转载 2019-07-09 15:30:48 · 184 阅读 · 0 评论 -
正则匹配以xx开头以xx结尾的单词
在字符串处理中,正则表达式是一大利器,但其对于初学者而言是存在一定的难度的。 而如何匹配以xx开头以xx结尾的单词呢?假设需要匹配的字符串为:site sea sue sweet see case sse ssee loses 需要匹配的为以s开头以e 结尾的单词。 正确的正则式为:\bs\S*?e\b无论什么语言的正则的格式都一样,下面以python为例来进行代码演示: 解释一下:在pyt原创 2017-12-14 22:35:43 · 112670 阅读 · 7 评论 -
python3(urlopen)获取网页的坑
首先,python2和python3在导入urlrequest的方式都不一样。 python2是这样:import urllib2 而python3里面把urllib分开了,分成了urlrequest和urlerror,在这里我们只需导入urlrequest即可。from urllib.request import urlopen然后直接放代码跟着代码讲吧,这个是正确的例子: from u原创 2017-12-10 23:25:51 · 6793 阅读 · 1 评论