线性神经网络
Chapter 3 线性神经网络线性回归
随机梯度下降:
预测结果
在线性假设(目标可以表示为特征的加权和)下,对于预测结果$\hat{y}$有:
$\hat{y} = w_1x_1 + …+w_dx_d + b$ 或 $\hat{y} = w^Tx + b$
其中$w$ 是所有权重构成的向量,$x$是所有特征构成的向量,b是偏移量。
损失函数
我们使用损失函数来量化目标的实际值与预测值之间的差距,当样本预测值为$\hat{y}^{(i)}$,真实值为$y^{(i)}$时,损失值是关于${w,b}$的函数。回归问题中常用的损失函数是平方损失函数。
$l^{(i)}(w,b) = \frac{1}{2}(\hat{y}^{(i)}- y^{(i)})^2$
其中常数$\frac{1}{2}$不会导致本质区别,但可以使求导后的结果系数为1,这样在形式上会稍有简化。
梯度下降
梯度下降方法通过不断地在损失函数递减的方向上更新参数来降低误差,具体的更新方法是:
每 ...
BUAA-CO-P0
P0_Logisim部件及状态机设计目录 :
[toc]
组合逻辑组合逻辑电路是指这样一类电路,它不具有像寄存器这样的与时序有关的器件。组合逻辑电路在输出被给出后极短时间内给出相应的输出;
P0_L0_CRC便是典型的组合逻辑,我们一次性地给出一个8位二进制被除数和一个4位二进制除数,在输入给出后的极短时间内反馈它的11位CRC校验码。根据题目描述易得我们需要完成8次4位除4位的模二除法,每次输出3位余数即可,由此我们考虑创建一个实现模二除法的子电路div。利用div就能很快实现该题目。
P0_L1_foti是一个组合电路问题,将输入16位数利用splitter分离为sign,exponent,float三部分。根据exponent进行分支,如果进入分支的判段为真,则利用一个三态缓冲器(controlled buffer)激活该分支电路。
时序逻辑时序逻辑电路一般具有寄存器,触发器这样的器件,它具有记忆功能,能够存储电路的状态信息,并根据输入信号和当前状态产生输出;
P0_L0_GRF是一个复杂的具有时序逻辑的电路。我们首先考虑实现一张端口定义表和功能表来清晰化我们要做的事情 ...
BUAA_OOpre_4
Lecture 4 Java程序的Bug分析与调试
多种输入指令的处理:
一个自然而然地想法是这样的:
12345678910111213141516171819202122import java.util.Scanner public class MainClass(){ public static void main(String[] args) { Scanner scanner = new scanner(System.in); int n = scanner.nextInt(); //表示接下来有n条指令 for (int i = 0; i < n; i++) { int instruction = scanner.nextInt(); switch (instruction) { case 1 : command1(); br ...
BUAA_OOpre_3
Lecture 3 继承与接口使用
继承:
继承是类之间的一种抽象层次关系
继承让子类获得父类的属性和方法,实现复用和扩展
继承可以把多个类中的重复内容提取出来形成父类,减少冗余和增强可维护性
继承在Java中的语法:
(1)extends关键词:Java通过关键字extends来定义继承关系
(2)super关键词:子类通过super.attribute引用父类的非私有属性,通过super.methodName()调用父类实现的方法
(3)父类中public和protected类型的成员可以被子类直接访问,private成员需要通过方法访问
(4)Java仅支持单继承,即一个类最多只能有一个父类
方法重写:
(1)子类重新实现父类已有的方法被称为方法重写(override),重写要求方法名称,参数(个数,顺序,类型)和返回类型均保持一致,这样既保持了类的抽象层次,又实现了子类的独有行为
(2)方法重写的访问权限:
重写方法的visibility范围必须大于等于父类的方法
(3)方法重写的返回类型:
若父类方法返回基本类型,则重写方法只能与其保持一致
若父类方法返回 ...
BUAA_OOpre_2
Lecture 2 编写类与单元测试
类的基础:
类是一种自定义的数据类型,包含数据以及操作数据的方法
12345678910public class Person{ // 属性:定义类要管理的数据 private final int age; private final String name; // 方法:定义类要提供的行为 public void printBasicInfo() { System.out.printf("Hi, my name is %s, I am %d",name , age); }}
Java程序有多个类,拥有main方法的被称为主类,一般不设置属性
123public static void main(String[ ] args){ // 程序入口}
main方法是程序入口,main方法一般不做具体的业务处理,而是把输入请求交给业务类进行处理,业务类按照业务类别封装了业务数据和处理行为;
类的构造:
(1)类,属 ...
BUAA_OOpre_1
Lecture 1 Java程序入门与代码管理
面向对象是一种以对象为中心来构建程序逻辑的方法;
程序逻辑:数据及其关系 + 行为及其关系
类与对象:
面向对象语言使用“类”(class)这个概念来抽象化“对象”,一个类可以实例化出任意数量的对象,对象包含了数据和行为
Java程序中类由属性和方法组成,其中属性定义了数据结构,方法定义了对数据结构的操作函数
每个类都有一种构造方法用以实例化对象,而所谓构造方法则是指初始化该类的属性变量,然后返回对象指针
类的名称与相应文件的名称必须一致,一般一个Java文件只定义一个类
封装,继承,多态:
(1)封装: 提供清晰的接口,让类的内部复杂性外部不可见;
类封装了数据和方法,通过可见性来限制外部对内部数据和方法的访问
改变类的内部实现细节不影响类的使用者的使用
(2)继承: 建立类之间的抽象层次来协同降低复杂性;
子类从父类中获得属性和方法的机制
子类可以获得父类的设计与实现,从而实现复用
子类可以对父类进行拓展
(3)多态:类通过提供多种形态方法来解耦复杂度;
解藕了类针对同一个指令的多种处理逻辑,面向对象语言提 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment