CNN卷积神经网络-原理
1. 为什么对于图形,不能暴力的使用全连接层?
直接全连接,参数过多,训练慢且容易overfitting。
2. 图形识别的一些观察
不需要完整的图片,只用看一小部分。
Observation 1
只用在意一个小区域(receptive field)的信息,而不是整张图片。
receptive field可以有重叠甚至可以完全相同(侦测多种pattern)
receptive field的大小、形状、位置、channal都是可以调整的
Tyopical Setting
stride 偏移量
padding 填充(方法多样
Observation 2
同一个pattern在所有receptive field共享参数。
Benefit of Convolutional Layer
针对图像识别的特化神经网络。虽然弹性变小,但是不会overfitting。
Convolutional Layer
每一个filter都产生一层层特征,所有的filter叠加起来就是一个feature map。
可以发现每个Filter高度等于输入的channel,宽度等于recepti ...
Deep_Learning 简介
1. Difference between Deep network and Shollow network
deep network 显著地减少了参数的数量,一方面避免了参数过多而过拟合的风险,一方面也减少了计算量,提高了训练速度。
深度学习可以在参数量小的同时,loss值同样小。做到了鱼与熊掌的兼得。
两难困境
模型太大了,理想解恨好,但是训练出来效果不好
模型小了,理想和现实接近但是都不好
为什么需要Hidden Layer
正常的函数逼近
制造很多上图中的sigmoid函数,然后叠加在一起,就可以逼近任何函数了
于是通过神经网络的连接,通过设置很多神经元的参数:weight and bios,再通过sigmoid激活函数后组合起来,就可以逼近任何函数了
当然更多时候,我们用relu激活函数代替sigmoid函数,因为relu函数更简单,计算量更小,而且效果更好。
为什么需要多层神经网络
Why we want “Deep” network, while not “fat” network? Just because it sounds cool?
Y ...
快捷键合集
Windows
vscode:
Ctrl + Shift + P 打开命令面板
Ctrl + Shift + N 新建窗口
Alt + ← 返回上一处光标
Ctrl + u 撤销光标的上一次操作
Macos
OPTION COMMAND D 隐藏菜单栏
command shift 4 截图
control option <- 窗口靠左
command h 隐藏程序
command q 关闭程序
command w 关闭程序窗口
Command T/N 新建标签页or新建窗口(finder中)
Command + Option + back 彻底删除
iterm2
imgcat 展示文件
proxy 打开终端代理
unproxy 关闭终端代理(实际上执行的是导入的脚本)
Linux terminal
watch -n 1 nvidia-smi 实时刷新监控显卡使用情况
gpustat 简化的nvidia-smi(插件
Vim
演化算法HW2 Maximum Cut
报告题目:Maximum Cut
detect0530@gmail.com
1 引言
演化算法可以解决很多优化问题,其中最大割问题是一个NP难问题,本次作业使用了遗传算法来解决最大割问题。
盼来的演化算法实践!同时更加期待第四次HW!
2 任务一 基本演化算法
本阶段,我将介绍code的基本结构,以及如何运行。
2.1 演化算子
12345def Get_fitness(graph,x,n_edges,threshold=0): g1=np.where(x==0)[0] g2=np.where(x==1)[0] fitness = round(nx.cut_size(graph,g1,g2)/n_edges,5) return fitness
计算fitness的函数,这里使用了nx的cut_size函数,计算割集的大小,除以总边数,得到fitness。
123456def One_bit_mutation(x): x_new=copy.deepcopy(x) idx=random.randint(0,len(x_new)-1) x_n ...
IntroAI_HW3 "Aliens game" Lab Report
报告题目:Aliens 游戏
王崧睿 221502011 detect0530@gmail.com
2023年11月
1 引言
之前研究过一些机器学习算法,很高兴能在这次作业里学习并运用检测不同算法对该问题的适用性。
2 实验准备
Task1
2.1 任务概述:
通过学习并观察代码框架,发现我需要先完成一次游戏,再对我完成游戏中的行为的特征提取,采用surpervised分类算法,让机器学会我的操作思路和细节。
2.2 思路制定:
明确目标:要在不被炸弹炸死且不能让alien进入最后一层,同时尽可能快的结束游戏。
我发现出怪的时间间隔是固定的,如果我们能对准轴,那么我们就可以在出怪的时候炸死它们,所以第一步就是先左移然后尽可能在刷怪时就歼灭之。
而当出现漏怪的情况,我们先按兵不动,因为如果转火去追击,那么就必须放弃即将新刷出来的怪,得不偿失。但是如果停止刷怪,或者大部分怪已经刷出来了,那么就该改变策略去歼灭了。
言而总之,战术分为两个部分:
一开始的定点打击,旨在尽可能多的歼灭敌人。此时不会主动移动,只会不断发射子弹,同时闪避炸弹。
当敌人数量下降到一定地步后 ...
NTU_ML_HW1
Homework 1: COVID-19 Cases Prediction (Regression)
Objectives:
Solve a regression problem with deep neural networks (DNN).
Understand basic DNN training tips.
Familiarize yourself with PyTorch.
If you have any questions, please contact the TAs via TA hours, NTU COOL, or email to mlta-2022-spring@googlegroups.com
Download data
If the Google Drive links below do not work, you can download data from Kaggle, and upload data manually to the workspace.
12!gdown --id '1kLSW_-cW2Huj7bh84YTdimGBOJ ...
GPT问答_NN数据拟合源码拆解
Sample code for PyTorch
12345678def same_seed(seed): '''Fixes random number generator seeds for reproducibility.''' torch.backends.cudnn.deterministic = True torch.backends.cudnn.benchmark = False np.random.seed(seed) torch.manual_seed(seed) if torch.cuda.is_available(): torch.cuda.manual_seed_all(seed)
这是一个函数,看起来用于设置随机数生成器的种子以实现可重复性。以下是每一句的解释:
def same_seed(seed):
这是一个Python函数的定义,名为same_seed,它接受一个参数seed。
'''Fixes random number generat ...
人工智能导论HW2黑白棋实验报告
报告题目:黑白棋游戏&博弈算法
detect0530@gmail.com
1 引言
过去曾有关注过博弈论的相关算法,比如那什均衡、博弈树。但是因为效率的担心,往往忽略了最为传统但又花样百出的搜索博弈。这次作业,我将尝试用搜索博弈的思维来考虑黑白棋游戏。
2 实验内容
2.1 Task1 介绍minimax的实现
12345public MiniMaxDecider(boolean maximize, int depth) { this.maximize = maximize; this.depth = depth; computedStates = new HashMap<State, Float>();}
这里的maximize表示当前的决策者是最大化还是最小化,depth表示搜索的深度,computedStates表示已经计算过的状态,用HashMap进行存储。
1234567891011121314151617181920212223242526public Action decide(State state) ...
搜索和演化算法HW1实验报告
报告题目:Pacman Game
detect0530@gmail.com
1 引言
在个人过去的实践中,搜索算法是低效暴力的代名词,但是通过本课程的学习,从深度优先宽度优先到代价优先,再到A*算法,我才发现搜索算法的强大之处。优秀的启发式函数可以大大提高搜索效率,搜索算法的强大之处在于其可以解决各式各样的问题,比如本次实验中的pacman游戏,可以通过搜索算法来解决。并在一次次优化算法的过程中,我也对搜索算法有了更深的理解。
2 实验内容
2.1 TASK1 dfs&bfs in Maze Problem
2.1.1 防止走同样的点
和所有的搜索算法一样,如果遇到了重复的点,那么大可不必再走一遍。
于是在后续所有的程序里,我用VisitedNodeVisitedNodeVisitedNode作为list存储当前的已经走过的状态,如果当前状态已经走过,那么就不再走这个点。
2.1.2 数据结构的选择
在这个实验中,我选择了StackStackStack作为深度优先搜索的数据结构,QueueQueueQueue作为宽度优先搜索的数据结构。
2.1.3 核心代码展示
123 ...
人工智能导论HW1实验报告
报告题目:Bait游戏&搜索算法
detect0530@gmail.com
引言:
在个人过去的实践中,搜索算法是低效暴力的代名词,但是通过本课程的学习,从深度优先宽度优先到代价优先,再到A*算法,我才发现搜索算法的强大之处。优秀的启发式函数可以大大提高搜索效率,搜索算法的强大之处在于其可以解决各式各样的问题,比如本次实验中的Bait游戏,可以通过搜索算法来解决。并在一次次优化算法的过程中,我也对搜索算法有了更深的理解。
2 实验内容
2.1 Task1: 深度优先搜索
2.1.1 记录走过的状态
要求使用深度优先搜索完成Bait游戏,我们首先要确保一定可以遍历完所有的情况(即completion),因为游戏规定精灵可以上下左右移动,那么每张地图都构成一个图,那么首要问题就是避免死循环,即避免走“回头路”,我们使用
1private ArrayList<StateObservation> Visited= new ArrayList<StateObservation>();
定义一个状态数组表示已经走过的状态,仔细阅读源码框架后,StateObs ...