ML笔记
大三时正式开始接触AI机器学习方面的内容,希望能为以后研究生方向铺路
1. Regression
如何开始一个深度学习?
Function with unknown parameters
w and b are unknown parameters
w -> weight b->bias
Define loss from training data
Optimization
梯度下降,算积分,使得Loss趋近于最小
可反复增加层数,来达到建立深度神经网络的目的
2. Classification
模型无法训练起来的原因:
model bias
参数不够,如同大海捞针,针却不在海里
optimization issue
梯度下降却无法得到最优解,如同大海捞针,方法不好捞不到针
解决方法:
比较不同的模型
从浅的网络或一些简单的模型开始优化
如果运用了深度网络,loss却不如其它简单模型来得好,那么可以归结于optimization issue,如下图所示:
General ...
割圆法Pi
题目
采用割圆术计算圆周率,即对一个圆先割出一个正方形,再割出4个等腰三角形,再割出8个等腰三角形,后面依此类推,把这些割出的图形面积相加即为圆的面积,然后除以圆的半径的平方,最终得到圆周率。
分析
方法1
首先这道题所描述的割圆法,与我们以往认知的割圆法有所不同,本题是以面积趋近圆,最后用数学公式S=pi*r^2求出pi
按照题目所述先割正方形,再割三角形的方法,用代码实现极为复杂。通过分析题目我们得知,可以将每次分割的三角形与起初的正方形结合,看作一个正多边形求解。通过连接圆心,将正多边形分解为三角形,利用数学公式S=1/2*a*b*sina求出一个三角形的面积。
观察规律得知三角形的个数为4,8,16呈2的指数次幂递增,易得多边形面积,可得pi
方法2
另一种方法利用勾股定理,代替了角度。首先利用半径得出了正方形的边长,进而根据边长与半径的关系计算出三角形的高,得出单个三角形的面积,如上图。然后利用勾股定理算出三角形的斜边长c,作为下一个三角形的底边长。因此类推,面积易得。
代码
方法1
1234567891011121314151617181920212223242526 ...
回溯算法解决01背包问题
先前用C语言很容易实现了一个回溯算法,但转到Java后由于面向对象的原因,一时不知道如何处理变量。今天学习了static和final关键字,正好做一个练习。
static: 定义一个类变量,使当前变量可以此类中的任意方法访问
final: 定义一个常量
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package Foundation;/** * @PackageName: Foundation * @ClassName: Bag * @Description: 回溯法实现01背包问题及final, static关键字的使用 * @Author: codeslogan * @Date: 2021-09-02 16:00 */public class Bag { static final int N = 3; //3件物品 static final int W = 16; //限重16 sta ...
Java3D安装教程
正值学习计算机图形学期间,学校选用的是比较冷门的Java3D,网上的安装教程也比较少,安装教程仅供参考。
1. JDK安装
JDK 点击下载
可以下载1.8或11稳定版本,这里记得要在我的电脑中配置环境,由于教程众多这里不再赘述
2. Java 3D 1.5.1
Java3d 点击下载
根据自己的系统选取,例如本人用的是windows,则选java3d-1-5-1-windows-i586.exe(代表32位)
这里注意一点,JDK和Java3D的位数需相同,例如JDK用的32位,Java3D库也需32位
3. idea的安装
idea 点击下载
下载community版本即可,如有激活码或其它途径可下载ultimate版本
以上三样安装安装好之后,即可打开idea进行配置
ddl文件配置
将Java3D bin目录文件下的ddl文件拷贝至JDK bin目录下,否则将报异常UnsatisfiedLinkError
打开idea,选取环境,创建项目
右键External Libraries下的环境,打开库设置
添加jar包
找到java3d的安装位置,默认是在以下 ...
页面置换算法
5种页面置换算法的简单实现
页面置换算法
OPT
最佳置换算法
缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问);
优点:最佳置换算法可以保证获得最低的缺页率,性能最好
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960void opt() //最佳转换算法,往后查找{ printf("--------------------------------\n"); printf("现在执行的是最佳置换算法opt:\n"); memset(arr, -1, sizeof(arr)); int no = 0, tot = 0, z = 0, three = 0; int flag[8]; memset(flag, 0, sizeof(flag)); //初始化一个flag数组,来确定最晚出现需要 ...
Matlab笔记
基本操作
小操作
添加注释 Ctrl+R %
取消注释 Ctrl+T
清空工作区变量 clear
清除命令行里操作过的命令,使屏幕变干净 clc
clear;clc 表示初始化
分号;表示不显示运行结果
输入输出函数(input(), disp())
disp用法类似C语言中的printf, 结尾无所谓分号
行向量 a = [1 2 3]
列向量 a = [1;2;3]
A = input(‘请输入A:’)
num2str
将数字转化为字符串
a = 40 40
num2str(a) ‘40’
字符串的拼接
strcat(‘a的取值为’, a)
[‘a的取值为’ a]
sum()
如果是一维向量,则直接求和
如果是多维,默认对列向量求和
sum(E, 1) 对列向量求和
sum(E, 2) 对行向量求和
sum(E(:)) 对整个矩阵求和
提取矩阵中的元素
A(3,2) 表示第三行第二列
A(3,:) 表示第三行所有元素
A(:,2) 表示第二列所有元素
:表示取所有元素
A([2,5],:) 只 ...
Git配置
最早接触Git是用来搭建博客,也就是现在看到的这个界面。git bash给我的第一感觉就是可以用linux的命令来对windows进行一些操作,十分便捷。本文将记录git相关知识。
首先,Git是目前世界上最先进的分布式版本控制系统。
版本控制工具
大致分为3种
本地版本控制
集中版本控制 SVN
分布式版本控制 Git
Git环境配置
软件的下载这里不再赘述,主要记录关键的几步。所有的这些修改可以在如下目录中找到
1)Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
2)C:\Users\huawei\ .gitconfig 只适用于当前登录用户的配置 --global 全局
设置用户名与邮箱
12git config --global user.name "CodeSlogan" #名称git config --global user.email mrchen40@163.com #邮箱
SSH公钥
这里我解释一下这个公钥和Git之间的关系。每台电脑上都可以安装git,从而产生对 ...
天梯笔记
本节文章对刷天梯赛的过程作一些记录,主要是一些题目自己的理解。
涉及到一些数据,熟悉其基本原理,并加以例题帮助理解。
Nothing is unreachable ! to me
L1-064 估值一亿的AI核心代码 (20 分)
以上图片来自新浪微博。
本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:
无论用户说什么,首先把对方说的话在一行中原样打印出来;
消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
把原文中所有大写英文字母变成小写,除了 I;
把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;
把原文中所有独立的 I 和 me 换成 you;
把原文中所有的问号 ? 换成惊叹号 !;
在一行中输出替换后的句子作为 AI 的回答。
输入格式:
输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字 ...
友元函数无法访问私有成员
Problem
今天在完成一份C++作业时,遇到了一个问题:
已经将函数作为友元放在了Port类,在分文件编写时仍然提示无法访问类中的私有成员
Solve
在头文件中加入两行代码,这可能也是我的一个习惯问题,iostream只在方法文件中添加
port.h
12345678910111213141516171819202122232425#ifndef PORT_H#define PORT_H#include <iostream> //头文件中务必加入这两行代码using namespace std;//****class Port{private: char* brand; char style[20]; int bottles;public: Port(const char* br = "none", const char* st = "none", int b = 0); Port(const Port& p); virtual ~Port() { delete[]brand; } Po ...
Dev-C++调试配置
我最开始接触C语言时用的编译器是Dev-C++,但调试功能一直没法使用,我也因为这个原因没有养成调试程序的习惯。今天上机房上实验课时,老师帮我解决了这个困扰我很久的问题。现将方法记录如下,希望大家在学习程序设计时可以试着去debug,同时也方便自己日后查找。
复制zlib1.dll文件到C:\Windows\System32目录下
设置Dev->工具->编译选项->代码生成优化->连接器->产生调试信息YES
设置Dev->工具->环境选项->选中查看鼠标指向的变量
zlib1.dll文件的链接如下:
私聊博主