def

写一个小程序,参数是含有10个整数的数组,计算10个正整数的平均值,找出这10个数中与平均值距离(差值得绝对值)最近的三个数,以距离大小对这三个数进行排序和输出(与平均值距离最小的先输出)

淺唱寂寞╮ 提交于 2020-10-24 07:54:12
python实现代码: class Solution: def find(self,nums): ret = [] sum = 0 for num in nums: sum += num; avr = sum/ len(nums) distance = [] for num in nums: distance.append(abs(num - avr)) i = 0 flag = [] retflag = [] while i < 3 : data = distance[0] m = 0 n = 0 for num in distance: if num < data and num not in flag: data = num n = m m += 1 flag.append(data) retflag.append(n) i +=1 for num in retflag: ret.append(nums[num]) return ret if __name__ == ' __main__ ' : test = Solution() a =[33,44,61,2,36,42,56,81,11,17 ] b = test.find(a) print b 运行结果: 来源: oschina 链接: https://my.oschina.net/u/4324735/blog

paddlepaddle目标检测之水果检测(yolov3_mobilenet_v1)

被刻印的时光 ゝ 提交于 2020-10-24 07:52:47
一、创建项目 (1)进入到https://aistudio.baidu.com/aistudio/projectoverview/public (2)创建项目 点击添加数据集:找到这两个 然后创建即可。 会生成以下项目: 二、启动环境,选择GPU版本 然后会进入到以下界面 选择的两个压缩包在/home/aistudio/data/下,先进行解压: !unzip /home/aistudio/data/data15067/ fruit.zip !unzip /home/aistudio/data/data15072/PaddleDetec.zip 之后在左边文件夹就可以看到解压后的内容了: 三、查看fruit-detection中的内容: 其实是类似pascal voc目标检测数据集的格式 (1) Annotations 以第一个apple_65.xml为例: folder:文件夹名称 filename:图片名称 path:文件地址 size:图片的大小 object:图片中的对象名称以及其的左下角和右上角的坐标。 < annotation > < folder > train </ folder > < filename > apple_65.jpg </ filename > < path > C:\tensorflow1\models\research\object

Serverless 的 AI 写诗,程序员浪漫起来谁能顶得住啊!

|▌冷眼眸甩不掉的悲伤 提交于 2020-10-24 04:11:03
古诗词是中国文化殿堂的瑰宝,记得曾经在韩国做 Exchange Student 的时候,看到他们学习我们的古诗词,有中文的还有翻译版的,自己发自内心的骄傲,甚至也会在某些时候背起一些耳熟能详的诗词。 本文将会通过深度学习为我们生成一些古诗词,并将模型部署到 Serverless 架构上,实现基于 Serverless 的古诗词生成 API。 项目构建 古诗词生成实际上是文本生成,或者说是生成式文本。关于基于深度学习的文本生成,最入门级的读物包括 Andrej Karpathy 的博客。他使用例子生动讲解了 Char-RNN (Character based Recurrent Neural Network) 如何用于从文本数据集里学习,然后自动生成像模像样的文本。 上图直观展示了 Char-RNN 的原理。以要让模型学习写出「hello」为例,Char-RNN 的输入输出层都是以字符为单位。输入「h」,应该输出「e」;输入「e」,则应该输出后续的「l」。 输入层我们可以用只有一个元素为1的向量来编码不同的字符,例如,「h」被编码为「1000」、「e」被编码为「0100」,而「l」被编码为「0010」。使用 RNN 的学习目标是,可以让生成的下一个字符尽量与训练样本里的目标输出一致。在图一的例子中,根据前两个字符产生的状态和第三个输入「l」预测出的下一个字符的向量为 <0.1, 0

将B站视频json格式的字幕转换为srt格式的字幕

帅比萌擦擦* 提交于 2020-10-23 18:40:04
在B站下载的视频对应的字幕是json格式,在potplayer中不能导入json格式的字幕,在网上查找了一番, 发现已经有人用python写了json转换为srt的代码,见 https://blog.csdn.net/mondaiji/article/details/104294430 , 但那只是针对一个json文件的转换,我在此基础上改为批量把json转换为srt文件, 每次把需要转换的json文件放置在一个文件夹下, 在下面的代码中输入文件夹的路径,就可以批量把json文件转换为srt文件,存放在当前文件夹下的名为srt的子文件夹下。 import json import math import os def convert_json_to_srt(json_files_path): json_files = os.listdir(json_files_path) srt_files_path = os.path.join(json_files_path, ' srt ' ) # 更改后缀后字幕文件的路径 isExists = os.path.exists(srt_files_path) if not isExists: os.mkdir(srt_files_path) for json_file in json_files: file_name = json_file

APScheduler定时任务框架的使用

柔情痞子 提交于 2020-10-23 09:13:44
前言 APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,不仅可以添加、删除定时任务,还可以将任务存储到数据库中、实现任务的持久化。基于这些功能,我们可以很方便的实现一个python定时任务系统。 安装 1、利用pip进行安装 pip install apscheduler 2、 APScheduler 有四种组成部分: triggers(触发器):   触发器包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行,除了他们自己初始化配置外,触发器完全是无状态的。 job stores(作业存储):   用来存储被调度的作业,默认的作业存储器是简单地把作业任务保存在内存中,其它作业存储器可以将任务作业保存到各种数据库中,支持MongoDB、Redis、SQLAlchemy存储方式。当对作业任务进行持久化存储的时候,作业的数据将被序列化,重新读取作业时在反序列化。 executors(执行器):   执行器用来执行定时任务,只是将需要执行的任务放在新的线程或者线程池中运行。当作业任务完成时,执行器将会通知调度器。对于执行器,默认情况下选择ThreadPoolExecutor就可以了

标签平滑Label Smoothing

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-23 03:28:28
Lable Smoothing 是分类问题中错误标注的一种解决方法。 对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量) one-hot带来的问题:(对于独热的简单解释:https://blog.csdn.net/qq_43211132/article/details/96141409) 对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题: 1)无法保证模型的泛化能力,容易造成过拟合; 2) 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难适应。会造成模型过于相信预测的类别。 使用下面的 label smoothing 可以缓解这个问题: 原理:对于以Dirac函数分布的真实标签,我们将它变成分为两部分获得(替换)。 第一部分:将原本Dirac分布的标签变量替换为(1 - ϵ)的Dirac函数; 第二部分:以概率 ϵ ,在u(k) 中份分布的随机变量(u(k)是类别分之一) 代码: def label_smoothing(inputs, epsilon=0.1): K = inputs.get_shape().as_list()[-1] # number of channels return ((1-epsilon) * inputs) + (epsilon

Linux开发_快速定位关键字与变量

雨燕双飞 提交于 2020-10-23 02:35:30
Linux下开发几乎很少用IDE,基本书都是tmux,vim和zsh以及cmake与gdb这些构成一个完整的开发工具链。 那么当我们进行大型甚至中小型的项目时,文件非常多,不使用IDE的情况下如何查找一些结构体的定以或者关键字呢? grep -n -H -R "define" * grep是查找文件里匹配字符 -n 显示行号 -H 显示文件名 -R 递归查找每个子目录 "define" 要查找的关键字 * 通配符,表示任何可能包含define的字符 如果不加* 则只会搜索以define开头的字符串 如果想要精确匹配加上-w即可,如果加上-w grep -w -n -H -R "define" * 如果想忽略大小写的话使用“-i”即可 grep -i -w -n -H -R "define" * 这样看起来可能比较乱,我们可以使用-o只显示我们需要找的那一部分 grep -o -i -w -n -H -R "define" * grep常用选项: -a 或 --text : 不要忽略二进制的数据。 -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 -B<显示行数> 或 --before-context=

通过案例浅谈C++与Python的快速实现差别

♀尐吖头ヾ 提交于 2020-10-22 19:24:50
本文以中彩票问题入手,即15个元素(包含单个数字和字母)中依次取出4个元素,每次取出后不放回。彩票的奖金序列为随意取定的4个元素(包含单个数字和字母)。要求程序返回中奖前运行的次数。 依据数学中的组合原理可知,中奖的概率为1/1365 先用Python写出程序如下: from random import choice def doit(): loft=[0,2,3,5,‘k’,‘l’,‘u’,6,9,4,‘n’,1,7,‘q’,‘r’] co=[] for i in range(0,4): temp = choice(loft) loft.remove(temp) co.append(temp) return co count=0 while True: d=doit() #print(d) count=count+1 if (‘r’ in d) and (6 in d) and (0 in d) and (‘u’ in d): print(f"The truth is {d}") print(f"运行{count}次中奖 ") break; 可以Python看到总共是18行,代码比较简单紧凑,仅仅用了几个列表随机数函数而已。 接下来是C++ #include #include #include int n = 15; using namespace std; void

后浪Python --- 基础语法

北城以北 提交于 2020-10-22 17:54:37
一、注释 注释就是代码中说明性的文字,不参与程序的编译执行(不影响程序的功能)。 单行注释 在一行说明性文字前加 # # 这是第一行注释 # 这是第二行注释 # 这是第三行注释 运行如下: 多行注释 将注释内容写在三个单引号或者三个双引号之间 `` ` 这是第一行注释 这是第二行注释 这是第三行注释 ` `` 注:为了防止转译,加了缩进,在python中注释不加缩进 运行如下: 二、语句 一条语句占一行,一行结束后不需要写分号 print ( 'hello world' ) print ( 123 ) 运行如下: hello world 123 三、行与缩进 举例: print ( 'hello world' ) 此处是输出语句前加了缩进 运行如下: IndentationError: unexpected indent 此处运行结果省略了部分 注释:python中是通过冒号和缩进来产生代码块 python程序中,一条语句的前面不能随意添加缩进,只有在需要产生代码块的时候才能添加缩进 再举例: if True : print ( '你好!' ) 此处是输出语句前没加缩进 运行如下: IndentationError: expected an indented block 此处运行结果省略了部分 行 如果一条语句要在多行显示,需要在换行前加\(注意,\的存在不能破坏数据) 注

二分查找会更快吗?Python中的二分查找与线性查找性能测试

大兔子大兔子 提交于 2020-10-22 06:14:35
当您要检查某个元素是否在列表中时,有很多方法可以解决相同的问题。可以通过线性查找和二分查找来完成,但是要猜测哪个更快。 为什么? 如果你最近参加过面试,你就会知道二分查找是面试官的最爱。 您为什么要花时间学习二分查找?C ++编程朋友可能已经告诉过您。Python很慢。您想确保自己的程序不会比所需的速度慢。 学习Python时,您将学习进行线性查找以检查元素是否在列表中。当您学习编码时很好,但是如果列表中有60.000.000个元素会发生什么呢? 如果在包含11个元素的列表中进行线性查找,则必须遍历所有11个元素。如果您使用二分查找,最终可能要进行2次迭代,具体取决于您要查找的内容。请参见下面的图形。 显而易见,哪种方法更快。 开始学习Python时,您很可能已经使用了一百次列表。检查列表中是否有一个值是一项正常的任务,您之前已经看到过: my_list = [1,2,3,3,5,11,12] if 11 in my_list: return Truereturn False 或者 my_list = [1,2,3,3,5,11,12] for each in list: if each==11: return Truereturn False 让我们开始看看如何实现二分查找。 怎么做? 让我们看看二分查找是如何工作的。 首先,我们需要确保列表是有序的。您可以使用.sort(