自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stepondust 的课堂

互联网是世界上最好的课本,实践是世界上最好的老师

  • 博客(64)
  • 资源 (3)
  • 收藏
  • 关注

原创 论人工智能的低碳转型

近些年,人工智能技术的巨大突破重塑了人类社会的方方面面,然而这种成功的背后却是巨量的能源消耗和二氧化碳排放。本文从实际数据出发探讨了人工智能模型产生巨量能耗和碳排放的现象和原因,并说明了人工智能技术需要低碳转型,要走可持续的绿色人工智能之路。

2023-06-09 11:46:13 716

原创 TensorFlow 初步实现 CNN 卷积神经网络

这次深度学习实验课上,老师要求我们用 tensorflow 深度学习框架实现 CNN 卷积神经网络,并在经典的 MNIST 数据集上训练和评估自己的模型,即通过卷积神经网络初步解决手写体数字识别问题。实验题目需要实现的网络结构如下,有一个输入层、两个卷积层、两个池化层以及两个全连接层,最后一个全连接层就是我们的输出层。

2020-12-16 00:41:04 918 1

原创 自己动手写神经网络(一)——初步搭建全连接神经网络框架

这次深度学习实验课上,老师要求我们用 numpy 第三方库自己动手实现全连接神经网络,并在经典的 MNIST 数据集上训练和评估自己的模型,即通过全连接神经网络初步解决手写体数字识别问题。实验题目需要实现的网络结构有一个输入层、一个隐藏层和一个输出层,并且隐藏层的激活函数为 Relu 函数,输出层的激活函数为 softmax 函数,损失函数为交叉熵函数。

2020-12-02 15:41:11 10187 13

原创 自己动手写确定性知识系统(一)——初步搭建谓词逻辑表示框架

具体问题描述是这样的:一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等),房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,箱子位置为B,香蕉位置在C),如何行动可摘取到香蕉。我们通过谓词逻辑表示方法解决该问题,接下来讲一讲我的思路。

2020-11-19 17:26:17 1564

原创 初步了解 OpenStack 云计算开源框架

OpenStack 是当今最流行的开源云平台管理项目,可以控制整个数据中心计算、存储和网络资源的大型资源池。从它的名字可以看出它大致的含义,Open 顾名思义为开源软件,开放式的设计理念、开放式的开发模式、开放式的社区,Stack 意为堆,可以理解为云计算是靠每一块小瓦砾堆砌而成,也就是说 OpenStack 并不是单独的一个软件,它由多个组件一起协作完成某些具体工作。OpenStack 本身就是一个巨大的开源软件集合,集各种开源软件之大成,是公有云和私有云领域开发的两种旧解决方案的综合。

2020-11-10 13:06:05 1397 1

原创 计算机组成原理学习之路(四)——指令系统

计算机中有 一股控制信息,它使得计算机按人们预先编好的程序去工作 , 这些控制信息就是控制计算机执行某种操作的命令,称为指令。指令通常应该提供的信息包括指令所做的操作、操作数据的来源、操作结果的存放位置等信息 。一台计算机中所有指令的集合称为该计算机的指令系统。高级语言指令、汇编语言指令、机器语言指令和微指令的关系:一 条高级语言指令被“翻译”(编译或解释)成多条机器语言指令,一条汇编语言级指令(不包含宏指令)往往被“翻译”(汇编)成一条机器指令,一条机器指令功能的实现依赖于多条微指令的执行。

2020-07-09 05:48:08 1998

原创 计算机组成原理学习之路(三)——存储系统

设计大容量、高速度、成本低的存储系统是计算机发展追求的目标之一。对存储系统的基本要求是存储速度快、存储容量大、成本价格低,很显然,在同样的技术条件下,这些要求之间是相互矛盾的,存储系统层次结构的设计就是要利用相关技术克服上述矛盾,并构建一个存储速度快、存储容量大、成本价格低的存储系统。由高速缓冲存储器、主存和辅存三级存储体系构成的分级结构,3 种不同类型的存储器承担的职能各不相同。

2020-07-09 05:18:16 3689

原创 计算机组成原理学习之路(二)——运算方法

计算机的主要功能就是对数据信息进行加工处理,这种处理可以归结为算术运算和逻辑运算,前者包括加、减、乘、除四则运算,并与数据的编码形式和表达形式(浮点、定点)密切相关;后者是一种无进位的按位运算,相对比较简单。数据在计算机中是以一定的编码方式表示的,常用的编码有原码、反码、补码和移码。同一种算术运算,使用不同的编码,有不同的运算法则。采用补码数据表示,不仅符号位同数值位一起参加运算,而且还可以把减法变成加法实现,因此基于补码数据表示的定点补码加减法运算具有运算规则简单,易于实现等优点。

2020-07-09 04:38:15 2957

原创 计算机组成原理学习之路(一)——数据表示

计算机内部流动的信息可以分为两大类:一类为数据信息,另一类为控制信息。数据信息是计算机加工处理的对象,而控制信息则控制数据信息的加工处理。数据表示的作用就是将数据按照某种方式组织,以便机器硬件能直接识别和引用。由于数字计算机中的信息都是由逻辑电路进行处理,因此,应用中的任何数据要能直接被计算机识别和引用,必须首先表示成二进制。

2020-07-09 04:24:52 4000

原创 HBase 操作入门

HBase 有 3 种运行模式,即单机模式、伪分布式模式和分布式模式:单机模式:采用本地文件系统存储数据;伪分布式模式:采用伪分布式模式的 HDFS 存储数据;分布式模式:采用分布式模式的 HDFS 存储数据。在进行 HBase 安装配置之前,需要确认已经安装了 3 个组件:JDK、Hadoo 和 SSH。HBase 是 Hadoop 生态系统中的一个组件,但是,Hadoop 安装以后本身并不包含 HBase,因此需要单独安装 HBase。

2020-07-06 00:23:58 606

原创 MongoDB 操作入门

Linux系统上安装MongoDB的步骤都差不多,不过因为我自己的电脑是Ubuntu系统,所以这里展示的是Ubuntu系统上的安装步骤,下面我们一步一步地进行安装:通过head -n 1 /etc/issue命令查看自己Linux系统的系列类别和版本,我的是Ubuntu 18.04.3;到官网下载对应的 MongoDB 安装包,这里给出官网下载地址:https://www.mongodb.com/try#community,然后点击On-Premises选择在自己本地安装...

2020-07-03 20:50:23 542

原创 贝叶斯统计与变分推断

贝叶斯统计中,变分推断有着不可或缺的地位,在近些年,它也开始变得越来越流行,各种方法纷纷涌现。当我们在推断某些复杂的难以直接计算的后验分布时,变分推断是一个极好的选择,它可以用一个更简单的分布去近似目标后验分布。想对于同为近似推断方法的 MCMC 而言,变分推断在低维的问题上要比 MCMC 更快,并且在一些大型数据集上,使用 MCMC 的求解速度较慢,也不能很好地并行计算,因此,我们可以选择先使用变分推断快速得到一个局部最优解,然后以该局部最优解为初始点使用 MCMC 去计算目标后验分布的近似解。

2020-06-19 17:04:56 1423 3

原创 Python 网络编程学习笔记(二)——DNS 域名解析客户端程序设计

本博文介绍如何使用 Python 网络编程,设计并实现客户端的 DNS 域名解析及缓存服务。域名系统(DNS)是一个庞大的、全球的分布式数据库,,它主要用来把主机名转换成 IP 地址,DNS 以及相关系统之所以存在,主要有以下两个原因:它们可以使人们比较容易地记住名字;它们允许服务器改变 IP 地址,但是还用同样的名字。操作系统已经提供了执行基本 DNS 查找的服务,直接节约了我们花费在处理各种 DNS 查询上的时间。并且 Python 在它的 socket 标准库中,提供了访问这些基本操作系统服务的接口。

2020-06-19 10:31:33 2732

原创 Python 网络编程学习笔记(一)——基于 TCP 的客户端/服务器程序设计

本博文介绍如何使用 Python 网络编程,设计并实现基于 TCP 协议的 Client/Server 模式软件的服务器端程序和客户端程序。要学习网络编程,我们首先要了解什么是 Socket 套接字。Socket 是网络编程的一个抽象概念,通常我们用一个 Socket 表示“打开了一个网络链接”。为了在 Python 当中进行网络编程,Python 自带了 socket 这个标准库,它提供了标准的 BSD Sockets API,可以访问底层操作系统 Socket 接口的全部方法。

2020-06-19 10:20:39 944 5

原创 Python 网络编程小技巧(一)——获取本机 MAC 地址

本篇博文介绍如何利用 Python 的 uuid 标准库获取本机 MAC 地址。利用 Python 获取本机 MAC 地址非常简便,使用 uuid 标准库之后,一行代码即可获取。

2020-06-19 09:56:16 2422

原创 自己动手写模式挖掘(一)——初步搭建 Apriori 频繁模式挖掘框架

实验题目是这样的的,要求使用 Aprior 算法在 Groceries 数据集上进行购物篮分析来找出商品之间有趣的相关关系,其中,Groceries 数据集是某个杂货店一个月真实的交易记录,共有 9835 条消费记录和 169 个商品,对于我这样的初学者来说,数据量有点吓人,不过还是尽量去做了,接下来讲一讲我的思路。1 数据集的下载与处理2 发现频繁 1 项集3 利用先验性质压缩搜索空间4 获得所有的频繁项集5 由频繁项集产生强关联规则6 使用提升度评判关联规则7 组合模块形成完整代码

2020-05-31 22:45:51 2207 11

原创 自己动手写聚类(一)——初步搭建 k-means 聚类框架

实验题目是这样的的,要求使用 k-means 算法在一个无标签的开源数据集上进行聚类,并对聚类结果进行分析,数据集可以自己找,我就找了一个统计世界上所有国家的信息的数据集进行聚类,接下来讲一下我的思路。1 数据集的下载与处理2 处理离散的无序属性3 初始化聚类簇4 实现 k-means 聚类5 构建数据集的距离矩阵6 评估聚类质量7 组合模块形成完整代码8 数据与结果分析

2020-05-21 23:45:37 2601 5

原创 PyMC3 API 解读(二)—— sample() 函数

通过本篇博文我们来了解一下 sample() 函数,这个函数的参数比较多,接下来对这些参数一个一个来解释,帮助大家弄清楚它们分别代表什么意思:draws:int 类型,表示通过 MCMC 方法采样出的正式样本的数量,默认为 500,这里的正式样本是相对于预烧期样本来说的,预烧期的样本数量对应参数 tune,等下也会解释它,这里举个例子,假如将 draws=5000, tune=1000 传入 sample() 函数,那么对于一条 MCMC 链来说,前面 1000 个采样出来的样本不算进正式的采样样本……

2020-05-18 18:14:59 4597 4

原创 PyMC3 API 解读(一)—— find_MAP() 函数

通过本篇博文我们来了解一下 find_MAP() 函数,这个函数的参数比较多,接下来对这些参数一个一个来解释,帮助大家弄清楚它们分别代表什么意思:start:dict 类型,表示开始进行数值优化的初始值的字典,默认是模型自带的测试点,一般以 start={'theta':10} 的形式进行传参的话,这就表示数值优化时参数 theta 从 10 开始迭代优化;vars:list 类型,表示需要优化的变量的列表,默认是认定模型内所有的连续型变量都要优化,比如说如果变量 theta 需要进行优化…………

2020-05-17 23:13:45 2057 5

原创 Redis 操作入门

Redis可以存储键KEY与5种不同的基本数据结构类型之间的映射,这5种数据结构类型分别为STRING(字符串)、LIST(列表)SET(集合)、HASH(散列)和 ZSET(有序集合)键Key可以是数字、大小写字母、下画线或者中文,但不建议使用中文。Redis的命令是不区分大小写的,不过一般小写方便于辨认虽然key可以使用中文,但使用redis-cli打开交互界面时不建议使用,因为在列出当前所有key时,中文内容会显示乱码,变得难以阅读,不过使用 redis-cli --raw打开交互界面可以解决

2020-05-15 12:44:29 735 1

原创 PyMC3 概率编程入门

贝叶斯思维:和更传统的统计推断不同,贝叶斯推断会保留不确定性,在贝叶斯派的世界观中,概率是被解释为我们对一件事情发生的相信程度或者说信心。需注意的是,我们每个人都可以给事件赋概率值,而不是存在某个唯一的概率值,因为不同的人拥有不同的信息,因此他们对同一事件发生的信心也可以有不同的值,但这些不同并不说明其他人是错误的。贝叶斯推断的工作方式:我们会随着新的证据不断更新之前的信念,但很少做出绝对的判断,除非所有其他的可能都被一一排除。

2020-05-13 18:16:51 7295 25

原创 自己动手写决策树(一)——初步搭建决策树框架

数挖实验课的时候,老师让我们自己动手写决策树,还不能调用scikit-learn包,感觉有点难,想上网找找看能不能学一下,可是许多大佬都是调包做的,剩下的大佬们写的代码也无法短时间去理解,于是我只好照着书本以及参考网上大佬们的思想来自己动手写一写。实验题目要求使用ID3算法在鸢尾花Iris数据集上训练出一个基本的决策树模型,接下来我讲一讲我的思路:1 数据集的下载与处理2 随机划分数据集3 计算信息熵4 计算划分属性的信息增益5 递归生成决策树6 模型的预测与评估7 组合模块形成完整代码

2020-05-02 21:53:24 3344 9

原创 初步了解数据通信的基础知识

首先先来了解下几个常用术语:消息(message):通信的目的就是传送消息,如语音、文字、图像、视频等都是消息。数据(data):数据是运送消息的实体,也可以说,数据是使用特定方式表示的信息,通常是有意义的符号序列,这种信息的表示可用计算机或其他机器(或人)处理或产生。信号(signal):信号是数据的电气的或电磁的表现,根据信号中代表消息的参数的取值方式不同。信道(channel)一般都是用来表示向某一个方向传送信息的媒体,注意,信道和电路并不等同,一条通信电路往往包含一条发送信道和一条接收信道。

2020-04-29 19:59:38 2180

原创 初步了解点对点协议 PPP

对于点对点的链路,点对点协议PPP(Point-to-Point Protocol)是目前使用得最广泛的数据链路层协议,通常,互联网用户都要连接到某个ISP才能接入到互联网,PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议

2020-04-29 18:40:28 1559

原创 初步理解HDFS数据写入过程 + Java代码实现

HDFS的写入数据过程细节上比较复杂,我们根据代码来一步步分析HDFS写入数据的过程:1. 加载配置项;2. 创建文件系统实例;3. 创建文件实例;4. 创建输出流对象;5. 写入数据;6. 关闭实例对象。

2020-03-30 11:31:33 1998 2

原创 初步理解HDFS数据读取过程 + Java代码实现

HDFS的读取数据过程细节上比较复杂,我们根据代码来一步步分析HDFS读取数据的过程:1. 加载配置项;2. 创建文件系统实例;3. 创建文件实例;4. 创建输入流对象;5. 读取数据;6. 关闭实例对象。

2020-03-30 11:25:20 1126

原创 数据链路层的三个基本问题——封装成帧、透明传输和差错检测

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。透明传输中的“透明”是一个很重要的术语,它表示某一个实际存在的事物看起来却好像不存在一样,在数据链路层透明传送数据表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。现实的通信链路都不会是理想的,因此数据帧在传输中通常可能发生两种错误:比特差错和传输差错。

2020-03-28 10:45:24 6410

原创 模2运算

模2运算是一种二进制算法,是CRC校验技术中的核心部分。模2加减运算就是按位加减运算,即不带进位的二进制加法和不带借位的二进制减法运算,模2加与模2减运算的结果相同。模2乘运算即按模2加运算求部分积之和,无进位。模2除运算即按模2减运算求部分余数,不借位,其上商原则是:部分余数首位为1时,商为1,减除数;部分余数首位为0时,商为0,减0;当部分余数的位数小于除数的位数时,该余数为最后余数。

2020-03-28 10:29:50 5244

原创 那些年踩过的坑(一)——安装Rdkit的曲折之路

在做项目的时候碰到一个比较坑的问题,就是Rdkit无法安装,在经过一系列折腾以后终于成功了,非常高兴,所以将自己安装Rdkit时的一些经历记录下来(因为不是一边安装一边写的博客,所以一些报错没办法截图了),一方面用来告诉自己一件事,那就是只要思想不滑坡,方法总比困难多,遇到报错时不要慌,要细心地阅读Warning和Error,而且网上有很多大佬的教程,仔细摸索总会解决问题的,另一方面也想把我的经历...

2020-03-25 23:47:32 5696 2

原创 初步了解TensorFlow的变量

在TensorFlow中,变量的作用就是保存和更新神经网络中的参数,可用tf.Variable函数来声明变量设置变量初始值的方法有三种:使用随机数设置初始值;使用常数设置初始值;使用其他变量的初始值设置初始值在TensorFlow中,一个变量的值在使用之前,需要明确地调用变量的初始化过程TensorFlow中会将GraphKeys.TRAINABLE_VARIABLES集合中的变量作为默认的优化对象,在TensorFlow中可以通过tf.trainable_variables函数得到所有需要优化的参数

2020-03-08 21:00:15 578

原创 TensorFlow游乐场网页界面解读

TensorFlow游乐场是通过网页浏览器就可以训练的简单神经网络并实现了可视化训练过程的工具:http://playground.tensorflow.orgTensorFlow游乐场展示的是全连接神经网络,同层的节点不会相互连接,每层只和下一层连接神经网络解决分类问题的四个步骤:提取问题中实体的特征向量;定义神经网络的结构,定义如何从神经网络的输入到输出,设置隐藏层数和节点个数(前向传播);通过训练数据来调整神经网络中参数的取值,即训练神经网络的过程(反向传播);使用训练好的神经网络来预测未知的数据

2020-03-07 23:25:32 1043

原创 TensorFlow计算模型——计算图

TensorFlow是一个通过计算图(Computational Graph)的形式来表述计算的编程系统,TensorFlow中的每一个计算都是计算图中的一个节点,而节点之间的边描述了计算之间的依赖关系,对于依赖关系,如果一个运算的输入依赖于另一个运算的输出,那么这两个运算有依赖关系TensorFlow程序一般分为两个阶段:定义计算图中所有的计算和执行计算TensorFlow中的计算图主要有三个功能:隔离张量和计算,管理张量和计算,有效地整理TensorFlow程序中的资源

2020-03-07 17:32:35 807

原创 TensorFlow数据模型——张量

TensorFlow最重要的概念就是Tensor和Flow,Tensor就是张量,Flow就是流,它们合在一起直观地表达了张量之间通过计算相互转化的过程在TensorFlow程序中,所有的数据都通过张量的形式来表示,张量是TensorFlow管理数据的工具。张量可以被简单地理解为多维数组,n阶张量表示一个n维数组张量在TensorFlow中的实现并不是直接采用数组的形式,而是对TensorFlow中计算结果的引用,在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程

2020-03-07 17:29:57 708

原创 TensorFlow运行模型——会话

TensorFlow中的会话(Session)拥有并管理TensorFlow程序运行时的所有资源,当所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露问题TensorFlow会自动生成一个默认的计算图,如果没有特殊指定,计算会自动加到这个计算图当中,但TensorFlow不会自动生成默认的会话在交互环境下,TensorFlow还提供了一种直接构造默认会话的函数——tf.InteractiveSession()函数,省去了将生成的会话注册为默认会话的过程

2020-03-07 17:24:34 611

原创 TensorFlow处理MNIST数据集

MNIST是一个非常有名的手写体数字识别数据集,MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据,在MNIST数据集中的每一张图片都代表了0~9中的一个数字,图片的大小都为28 × 28,且数字都会出现在图片的正中间。在Yann LeCun教授的网站中:http://yann.lecun.com/exdb/mnist, 对MNIST数...

2020-03-07 11:22:02 901

原创 初步了解计算机网络

互联网按工作方式分为边缘部分与核心部分,主机在边缘部分进行信息处理,路由器在核心部分按存储转发方式进行分组交换计算机通信是计算机中的进程之间的通信,计算机网络采用的通信方式是客户/服务器方式和对等连接方式客户和服务器都是指通信中所涉及的应用进程,客户是服务请求方,服务器是服务提供方网络协议即协议是为进行网络中的数据交换而建立的规则,计算机网络的各层及其协议的集合称为网络的体系结构五层协议的体系结构由应用层、运输层、网络层、数据链路层和物理层组成,运输层协议是TCP和UDP协议,网络层协议是IP协议

2020-02-25 22:47:21 1822

原创 Eclipse小技巧(二)——生成自己的JAR包

有时候我们需要把自己编写的Java应用程序打包发送给别人,或者是将其部署到一些应用平台,这时候我们就需要利用一些工具将Java应用程序打包成JAR包,在这里选择的打包工具为Eclipse。第一步,新建一个文件夹,用来存放所编写的Java应用程序;第二步,在Eclipse工作界面左侧的Package Explorer面板中,在你所要打包的Java应用程序名称上右击,在弹出的菜单中选择Export,如下图所示:

2020-02-21 08:02:53 569

原创 HDFS判断文件或目录是否存在——Shell命令实现 + Java代码实现

一、Shell命令实现第一步,启动Hadoop:start-dfs.sh第二步,检测文件或目录是否存在:hdfs dfs -test -e 文件或目录名第三步,查看检测结果:echo $?若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。二、Java代码实现import org.apache.hadoop.conf.Configuration;impo...

2020-02-17 15:31:15 5148 2

原创 Eclipse小技巧(一)——使用Library管理JAR包

在使用Eclipse进行不同项目时,我们会经常添加许多额外的JAR包,不同项目需要的JAR包不同,直接添加JAR包会显得比较混乱,无法进行有效管理,因此,我们需要通过Library来管理自己的JAR包:第一步,右击项目的JRE System Library,如下图所示:第二步,新建自己的Library,点击Add Library按钮:第三步,点击User Library,然后点击Next...

2020-02-13 16:35:39 928

原创 Linux系统HDFS操作常用Shell命令

HDFS支持很多Shell命令,例如hadoop fs和hdfs dfs都是HDFS最常用的Shell命令,两者功能和用法相同,都可以查看HDFS文件系统的目录结构、上传和下载数据、创建文件等。在使用HDFS的Shell命令时最好配置一下PATH变量,因为每次输入命令都带上路径着实很麻烦,如何PATH变量请参照:Linux系统Hadoop伪分布式模式配置第九条。因为hadoop fs和hdfs...

2020-02-12 21:26:55 965

groceries.csv

【自己动手写模式挖掘(一)——初步搭建 Apriori 频繁模式挖掘框架】博文所使用的数据集,Groceries 数据集是某个杂货店一个月真实的交易记录,共有 9835 条消费记录和 169 个商品

2020-05-29

countries of the world.csv

【自己动手写聚类(一)——初步搭建 k-means 聚类框架】博文所使用的的聚类数据集的已预处理版本

2020-05-20

countries of the world old.csv

【自己动手写聚类(一)——初步搭建 k-means 聚类框架】博文所使用的的聚类数据集的未预处理版本即 old 版本

2020-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除