- 博客(57)
- 收藏
- 关注
原创 OpenCV 图片处理与绘制
将彩色图像转化为灰度图像的过程是图像的灰度化处理。彩色图像中的每个像素的颜色由R,G,B 三个分量决定,而每个分量中可取值0-255,这样一个像素点可以有1600 多万(256*256*256=1677256)的颜色的变化范围。而灰度图像是R,G,B 三个分量相同的一种特殊的彩色图像,其中一个像素点的变化范围为256 种,所以在数字图像处理中一般将各种格式的图像转化为灰度图像以使后续的图像的计算量少一些。灰度图像的描述与彩色图像一。
2024-11-18 15:40:50
1574
原创 指令——计算机的语言(part 2)
另一种方式是只编译和汇编每个函数,这样使得代码的改变只用编译和汇编有改动的函数,其他的不需要重新编译,这样就节省了一大部分计算机资源。如果外部引用都解析完了,链接器会决定每个模块将要占用的内存的位置。因为所有模块都是独立编译的,所有编译器不清楚这些模块在内存中的位置,那么当程序被放到内存中的时候就需要链接器来决定各个模块的绝对地址,即于寄存器无关的所有地址都必须重新定位用来反映真实的地址。基于以上的缺点,就出现了动态链接库的概念,只有在程序运行的时候这些库才会被链接加载,这样就减少了程序的大小。
2024-09-12 16:09:38
605
原创 指令——计算机的语言(part 1)
由于寄存器的数量是有限的,有的函数有时需要用到多与寄存器数量的参数。计算机中的指令和人操作计算机的指令是有一定差别的,指令在计算机中就是一串高低电平序列,可以对应于二进制的0101这种,但是由于指令较长,MIPS 指令有32位,又由于计算机数据大部分都是4位二进制符号,因此可以用16进制来表示计算机指令。在文章开始的第一个计算机结构图里面,处理器内部只保存少量的待处理的数据,大部分的数据还是需要从存储器中输入,因此计算机是如何把数据从存储器中读取到寄存器中的呢?栈指针是按照一个寄存器的大小来调整的。
2024-09-06 17:09:33
1103
原创 python 多线程
join()函数有一个特性就是主线程必须等待子线程完成才能开始后面的工作,所以当主线程除了等待子线程完成之外,还需要在子线程运行的同时做其他事情,那么子线程就可以不调用join(),只调用start()函数来运行线程也可以。新建的进程默认不是守护进程,如果要设置成守护进程,可以在thread.start 之前,用thread.setDaemon(True)来设置这个进程为守护进程,也就是“不重要”进程。举个例子:用threading创建两个进程并在进程中运行函数loop(),采用的上面的方法1。
2024-03-29 18:16:25
411
原创 [Machine Learning][Part 8]神经网络的学习训练过程
根据需求建立模型,从前面神经网络的结果可以知道,每一层都有若干个模型在运行,因此建立神经网络就需要先根据需求确定计算模型,也就是得到 逻辑回归模型公式为: 上面三层的神经网络的代码实现为: 例如线性回归的 二分法逻辑回归的损失函数为: 代码实现为:三、寻找最小损失函数的(w,b)组合梯度下降法: 代码实现为:循环100次可以看到在建立模型的过程中,代码中使用了activation激活函数。如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的
2023-11-03 11:30:10
1506
原创 [Machine Learning][Part 7]神经网络的基本组成结构
这里我们将探索神经元/单元和层的内部工作原理。特别是,与之前学习的进行比较。最后接介绍tensorflow以及如何利用tensorflow来实现这些模型。神经网络和大脑的神经元工作原理类似,但是比大脑的工作原理要简单的多。大脑中神经元的工作原理如下图:inputs表示上一个神经元传递过来的信号,然后经过当前神经元的处理,当前神经元将处理后的信号传递给下一个神经元,这样基本的信号传递就完成了。
2023-10-31 13:57:32
1025
1
原创 [Machine Learning][Part 6]Cost Function代价函数和梯度正则化
线性回归模型和逻辑回归模型都存在欠拟合和过拟合的情况。
2023-10-18 14:55:16
825
原创 [Machine Learning][Part 5]监督学习——逻辑回归
之前文章中提到监督学习的应用可分为两类:线性回归和逻辑回归。和线性回归不同,逻辑回归输出只有0和1。对于一个逻辑回归任务,可以先使用线性回归。然而我们希望逻辑回归预测模型输出的是0和1,为了达到这个目的,我们使用sigmoid()来把线性回归预测的输出y映射到0和1之间。公式中的z表示的是线性回归模型中输出的结果y。m个training data的情况下,y是一个含m个value的向量。用图形表示sigmod的输出样子是:可以看到输出区间始终在0到1之间,输入z越大,越趋近于1,反之趋近于0。
2023-10-12 14:27:28
634
原创 [Machine learning][Part4] 线性回归模型技巧
这种方法可以不多次迭代梯度下降函数就能得到w,b。但是缺点是在大量数据训练情况下效率较低,其次是这种算法仅仅在线性回归中实现了,并没有在其他模型中实现,因此,实际情况下的使用率不高。这里了解有这么个概念即可。
2023-10-10 13:56:50
571
原创 [Machine learning][Part4] 多维矩阵下的梯度下降线性预测模型的实现
之前部分实现的梯度下降线性预测模型中的training example只有一个特征属性:房屋面积,这显然是不符合实际情况的,这里增加特征属性的数量再实现一次梯度下降线性预测模型。(w,b) ——损失函数或者代价函数(2)损失函数值最小的时候,模型最接近实际情况:通过梯度下降法来寻找最优w,b组合。
2023-10-09 11:25:18
1174
原创 [Machine learning][Part3] numpy 矢量矩阵操作的基础知识
很久不接触数学了,machine learning需要用到一些数学知识,这里在重温一下相关的数学基础知识。
2023-09-27 15:03:06
919
原创 [Machine Learning][Part 2]监督学习的实现——梯度下降线性模型
实现一个简单的监督学习的模型:预测part1 中提到的买房模型。模型中有一个输入参数:房子面积 (单位:1000平方)x;一个输出结果:房子价格:y(单位:千美元)x_train中保存的是房子面积的集合,y_train中保存的是对应面积房子的价格。
2023-09-23 16:01:14
263
原创 Python 数据库——链表
链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表在逻辑上是连续的,但是在物理空间上可能是不连续的,因为链表的内存都是临时申请的,不一定会申请到连续的内存空间。常用的链表有单向链表和双向链表。这里主要介绍单项链表。单项链表的组成节点有两部分构成:数据和下一个列表的存储地址。单节点结构图:链表结构图:可以看到每一个节点中的addr都指向下一个节点的地址,phead为整个链表的头节点,不能改变,否则就会找不到整个链表。
2023-09-12 18:07:10
4515
原创 [Machine Learning][Part 1]监督学习和无监督学习
例如,对房价的判断,训练样本为过去2年不同面积的房子的价格,输入x为面积,输出y为房子价格。与应用1 数据回归预测有多种不同的输出不同,分类的输出只有两种:是 or 不是。与监督学习不同的是,无监督学习不需要指定y作为正确的label来训练模型,模型可以自己根据样本集的特征将样本集中的数据划分为不同的类群。下图中可以看出左边的监督学习是把数据分为正确的和错误的,而右边仅仅是把相似的数据放在一起,形成了两个不同的数据集。选项4:将病人分为两类:有糖尿病和无糖尿病的,因此是监督学习,属于监督学习中的分类应用。
2023-09-04 17:41:53
267
原创 Pytest 重复执行用例插件----pytest-repeat
在自动化过程中,想要重复执行一条脚本,查看他的稳定性,如果是在unittest框架中,可能会使用for一直循环这条用例,但是当我们使用pytest框架后,我们就可以通过某些插件来实现这个功能了。今天介绍的这个插件就是重复执行某条用例或者某些用例。
2023-08-03 15:07:29
1698
原创 PyTest 的基本用法
pytest] # 命令行参数 addopts = -s # 搜索文件名 python_files = test_*.py # 搜索的类名 python_classes = Test_* #搜索的函数名 python_functions = test_*在做接口测试时,有事会遇到503或短时的网络波动,导致case运行失败,而这并非是我们期望的结果,此时可以就可以通过重试运行cases的方式来解决。------->teardown_class # 第一次 teardown_class()
2023-07-07 16:12:30
950
原创 Pyhon 中分辨numpy产生的数据的维度
size=****,表示的是要产生的数组形式,这里表示产生一个3*4*5*6的数组。参数也可以是1*2,2*3等等,表示产生一个1*2的一维数组,和2*3的二维数组。下面分别查看数组成员,可以看到a[0]是以3个中括号结尾的第一个数组,是一个4*5*6的数组。*4*5*6的数组,所以a[x]中的最大值x只能取到2(可取0,1,2)最外层的数组看完了,进一步看第二层的数组,这是一个5*6的二维数组,最后一层数组: ,最大可取到a[2][3][4][5]下面输出第三层数组,最大可取到:a[2][3][4]
2023-05-19 14:22:45
698
原创 Pyhton循环嵌套——乘法口诀表
嵌套循环的基础用法,打印乘法口诀表:基础算法是row * col每一行打印当前行的乘法口诀。所以外圈循环以行数row为循环变量,每一行里面的列数col不能大于行数row,因此:1. 当row 小于9 时,打印每一行的乘法口诀2. 在每一行中,打印不同列col的乘法口诀,其中col 小于当前行数所以一共有上面两个循环结果:...
2022-07-01 19:21:49
812
原创 成功解决pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2
问题描述:Traceback (most recent call last): File "C:/Users/Lenovo/Desktop/水泥数据/dataprocess1.py", line 8, in <module> data1 = pd.read_csv("doubledata.xlsx") File "D:\Users\Lenovo\miniconda3\lib\site-packages\pandas\io\parsers.py", line 676, in
2022-05-16 17:11:35
9198
1
原创 Jupyter Notebook 安装过程记录
无意中发现了Jupyter Notebook这个在机器学习比较火的编译器,刚好自己准备学习一下机器学习方面的知识,就下载安装了一个。1、安装一个python,最好版本新一点的,我安装的是py3.8。2、更新pip到最新python -m pip install -U pip setuptools3、pip更新完成之后,开始安装jupyter notebook,我使用的是pip 安装,没有使用Anaconda 来安装#For Python2pip install jupyter#
2022-05-12 16:10:03
2092
2
原创 JAVA基础之线程
使用Thread.sleep()方法输出26个字母,间隔1秒。package com.threaddemo;import java.util.ArrayList;class Letter implements Runnable{ private ArrayList<Character> letter = new ArrayList(); public ArrayList getLetter() { return letter; } public void se
2022-05-12 15:26:49
99
原创 JAVA基础之多线程通信
weather类:package com.threadcommunicate;public class Weather { private int temperature; private int humidity; // flag = false ,生成数据;flag = true, 读取数据 boolean flag = false; public synchronized void getweatherData() { if(!flag) { try {
2022-05-12 15:26:20
154
原创 JAVA 基础之字节流
FileInputStream:当读取到文件的末尾时,read()会返回-1,根据这个返回值来判断是否已经读取到文件末尾。package com.filestream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class fileInputstreamDemo { public static void main(String[
2022-05-12 15:25:56
365
翻译 更改Android studio中SDK,AVD的默认路径
对于大部分首次下载android studio开发android的人来说, 由于Android Studio将会默认把SDK,AVD下载到我们的C盘,造成大量内存的占用,那么如何更改SDK,AVD的路径呢?首先附上SDK,AVD 的默认路径,在window7中SDK的默认路径是 C:\Users\Administrator\AppData\Local\Android\SdkAVD的默认路径是 C:\Users\Administrator\.android\avd网上一些文章里写的是“打开Andr
2020-11-22 11:22:38
1407
原创 Android监听事件OnClickListener 的使用
Android 监听事件功能,可以实现点击就会完成相应的功能。实现监听事件有4种方法:通过内部类实现 通过匿名内部类实现 通过当前Activity来实现 通过xml绑定来实现方法一:通过内部类实现.首先在btn1上用setOnClickListener()设置一个监听功能。这时需要传进去一个OnClickListener的对象进去。public void setOnClickListener(@Nullable OnClickListener l) { if (!isC
2020-11-20 15:37:15
11848
2
原创 JAVA基础——集合
1. list, 能够包含不同元素的一个集合,元素之间可以重复。实现类有arraylist,list的首尾添加或者删除元素的时候,效率较高。
2020-10-19 12:16:38
90
转载 错误 E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
使用 apt-get 命令的时候,遇到这种错误咋办?E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/), is another process ...
2020-02-16 20:21:17
11592
原创 菜鸟编程之路——打印连续输入的一行内容
目的:从标准输入中读取输入的内容,以行为单位,当连续两行或更多行相同时,则打印出这一行的内容,其余行不打印,连续 出现的行只打印一次。假定文件长度不超过128个字符。思路:首先读取两行标准输入,分辨保存为previous和current,然后比较两行是否相同(strcmp);若相同,则打印这一行;若不同,则将current copy给previous(strcpy),然后读取下一行,继续判断是否相...
2018-05-02 10:07:34
382
原创 菜鸟编程之路——输出1到100之间的质数
——记录自己的编程学习之路 质数是只能被1和自己本身整除的数字。任何数都能被1和自己本身整除,因此判断是不是质数,只需要判断是不是还能被其他数字整除。首先,大于本身的数字肯定不能被整除,比如100 肯定不能被200整除,所以问题就转化成判断1和本身之间还有没有能被整除的数字。例如,要判断55是不是质数,就要判断1到55之间有没有数能被55整除 将思路转换程序:1、设置一个外层循环,用于...
2018-04-27 10:35:14
13625
原创 C语言——变量存储类型
C语言中,变量存储类型指的是存储变量的内存的类型,主要分为三种:普通内存、运行时堆栈、硬件寄存器。变量存储在那种类型的内存中和变量的作用域有很大的关系。 首先,分析一下变量的作用域。作用域与声明的位置有关。在一个源文件中,变量声明的位置有两种:在代码块内和代码块外。代码块指的是被花括号{}包围的一段代码。 (1)代码块外声明的变量都被称为静态变量,这些变量存储在静态内存...
2018-04-26 11:14:46
448
原创 watchdog之喂狗分析
WatchdogWatchdog启动之后,系统会在一定时间间隔后重启,这样可以防止系统在遇到死机或者突然崩溃时无法继续运行。若系统死机或者突然崩溃,在一定时间过后,Watchdog会重启系统,使系统恢复运行。在正常的系统运行过程中,Watchdog若一直不断重启系统,会严重影响到系统的正常工作,因此需要一个程序在后台喂狗,防止系统重启,这样watchdog只有在系统崩溃,喂狗程序无法正常工
2016-11-30 17:58:29
10783
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人