自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 smale周报

之前loss一直不正常,改变了之前的一些小问题,使模型和损失函数以及数据匹配,使得loss为正,但效果有所差距(均为小改动,例如最后一层的变动和BCELoss和BCEWithLogitsLoss的改变)。解决了loss为负的问题,但现在的loss图没有正常收敛,训练集一直降低,验证集降低之后在某个epoch再升高,在前几轮的时候就达到了真实数据预测的最佳效果,之后便过拟合了。当改变了损失,所得到的效果不如从前。继续改进效果,然后想办法说明得到的效果,因为在训练中的某个时间段就得到了最佳测试效果。

2023-07-07 19:55:52 387 1

原创 Professor Min《论文写作》课程心得体会记录

此文记录来自闵老师课程的相关收获感想。闵老师人比较好“玩”,十分活泼,课堂教学效果一绝。作为学生收获颇丰,不胜言表,仅简单记录。

2022-12-13 20:32:23 715 1

原创 关于U-Net相关论文模型知识基础

杂记

2022-09-29 17:23:06 482 9

原创 日撸 Java 三百行学习笔记day61-62

近几天才返校,在忙毕业论文相关事宜,抽空写点心得体会,所以做得比较慢。决策树对于我来说也算是一个全新的概念,是数据挖掘的一个重要分支,根据闵老师所写的决策树快问快答可以大致了解,算是通俗易懂了。内容还是很多,一部分一部分拆开来解析。我们建造一颗决策树,从选择属性开始:/** ********************************** * Select the best attribute. * * @return The best attribute inde

2022-05-13 21:07:32 259 1

原创 日撸 Java 三百行学习笔记day5657

K- Means聚类算法: K- Means是迭代动态聚类算法中的一种,其中K表示类别数,Means表示均值。顾名思义K-Means是一种通过均值对数据点进行聚类的算法。K-Means算法通过预先设定的K值及每个类别的初始质心对相似的数据点进行划分。并通过划分后的均值迭代优化获得最优的聚类结果。K- Means算法的关键问题K值的选择 K值是聚类结果中类别的数量。简单的说就是我们希望将数据划分的类别数。K值决定了初始质心的数量。K值为几,就要有几个质心。 ...

2022-05-05 14:00:56 600 1

原创 日撸 Java 三百行学习笔记day54-55

第 54 天: 基于 M-distance 的推荐所谓 M-distance, 就是根据平均分来计算两个用户 (或项目) 之间的距离.初看还是不太懂,经过老师讲解论文里面的实例,现在也比较清晰了对于程序内容。当然代码里的各种成员变量啊,方法啊也是不少。/** ************************* * Construct the rating matrix. * * @param paraRatingFilename * the r

2022-05-04 15:58:09 549 1

原创 日撸 Java 三百行学习笔记day51-53

kNN 分类器KNN分类器是基于记忆的机器学习模型的一个例子。这意味着这个模型会记住训练示例,然后他们用它来分类以前从未见过的对象。KNN的这样的基本思想有点类似于生活中的“物以类聚。人以群分”。在KNN学习中,首先计算待分类数据特征与训练数据特征之间的距离并排序。取出距离近期的K个训练数据特征(KNN分类器的k是为了预测一个新的测试实例而检索的训练样本数)。然后根据这K个相近训练数据特征所属类别来判定新样本类别:假设它们都属于一类,那么新的样本也属于这个类;否则,对每一个候选类别进行评分,

2022-05-03 13:50:38 1133 2

原创 日撸 Java 三百行学习笔记day48 50

第 48 天: 堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列; 小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;堆排序的平均时间复杂度为 Ο(nlogn)。算法步骤:首先将n个元素建成初始堆,由于堆

2022-04-29 11:48:31 1185 1

原创 日撸 Java 三百行学习笔记day46

第 46 天: 快速排序该方法的基本思想是:1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。 这里我们选择的就是最后一个元素作为基准数/** ********************* * Quick sort recursively. * * @param paraStart The start index. * @param paraEnd..

2022-04-26 10:00:00 94 1

原创 日撸 Java 三百行学习笔记day45

第 45 天: 冒泡排序冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端.具体操作:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上

2022-04-25 00:06:34 1469 2

原创 日撸 Java 三百行学习笔记day43+44

第 43 天: 插入排序基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。public void insertionSort() { DataNode tempNode; int j; for (int i = 2; i < length; i++) { tempNode = data[i]; //Find the position to insert. //At the same time, move othe.

2022-04-24 12:02:51 99 2

原创 日撸 Java 三百行学习笔记day42

第 42 天: 哈希表哈希表在数据结构中已经学习过了,也比较熟悉。当然了方法有很多 ,不止一种。public DataArray(int[] paraKeyArray, String[] paraContentArray, int paraLength) { // Step 1. Initialize. length = paraLength; data = new DataNode[length]; for (int i = 0; i < length; i++) {

2022-04-23 10:00:00 472 1

原创 日撸 Java 三百行学习笔记day41

第 41 天: 顺序查找与折半查找顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位。这个原理很简单,也算是最最基础的最容易想到的一种查找方式了。顺序查找使用岗哨可以节约一半的时间。为此, 第 0 个位置不可以放有意义的数据, 即有效数据只有 length - 1 个。/** * An inner class for data nodes. The text book usually use an int value to * rep.

2022-04-22 17:12:26 113 1

原创 日撸 Java 三百行学习笔记day40

第 40 天: 小结通过对于图的学习,让我感觉到了与之前的很多不同之处,图与矩阵相关联,各种方法更多,用到的数组更多,难度也要大很多。1.对于矩阵乘法的三重循环,对于我来说算是比较新的东西,开始看到的时候还是很茫然,仔细分析,拆开分解乘法的过程,也就慢慢理解了,所以对于多重循环,要熟悉每层的意义最为重要,还有就是不要怕。2.对于Exception 的抛出与捕获机制,也是在一开始的时候不太理解,不会用,但在图里经常遇到,看得多了,自然理解就上去了。3.在图的广度优先算法里,学习到了用数组来表示

2022-04-21 16:21:49 364 1

原创 日撸 Java 三百行学习笔记day38

第 38 天: Dijkstra 算法与 Prim 算法Dijkstra算法:Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。// Step 1. Initialize. int[] tempDistanceArray = new int[numNodes]; for.

2022-04-20 18:02:10 369 2

原创 日撸 Java 三百行学习笔记day36

第 36 天: 邻连表对于图来说,邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构是存在对存储空间的极大浪费的。因此我们考虑另外一种存储结构方式:邻接表(Adjacency List),即数组与链表相结合的存储方法。邻接表的处理方法是这样的。1、图中顶点用一个一维数组存储,另外,对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。2、图中每个顶点vi的所有邻接点构成一个线性表,由于邻接点的个数不定,所以用单链表存储,无向图

2022-04-18 10:00:00 87 2

原创 日撸 Java 三百行学习笔记day35

第 35 天: 图的 m 着色问题图着色问题(Graph Coloring Problem, GCP) 又称着色问题,是最著名的NP-完全问题之一。数学定义:给定一个无向图G=(V, E),其中V为顶点集合,E为边集合,图着色问题即为将V分为K个颜色组,每个组形成一个独立集,即其中没有相邻的顶点。其优化版本是希望获得最小的K值。图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色?(这是搜素的

2022-04-17 17:42:23 338 3

原创 日撸 Java 三百行学习笔记day34

第 34 天: 图的深度优先遍历和树的深度优先遍历,包括图的广度优先遍历都有一定关联,里面都有类似的思想方法。深度优先深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。我们从这里可以看到,这样的访问策略是优先往纵向挖掘深入,而不是对一个结点的所有邻接结点进行横向访问。具体算法表

2022-04-16 10:00:00 116

原创 日撸 Java 三百行学习笔记day33

第 33 天: 图的广度优先遍历对于图的广度优先遍历与树的有相似地方。广度优先类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点。具体算法表述如下: 访问初始结点v并标记结点v为已访问。 结点v入队列 当队列非空时,继续执行,否则算法结束。 出队列,取得队头结点u。 查找结点u的第一个邻接结点w。 若结点u的邻接结点w不存在,则转到步骤3;否则循环执行以下三个步骤:

2022-04-15 10:00:00 407

原创 日撸 Java 三百行学习笔记day32

第 32 天: 图的连通性检测连通无向图:如果无向图任意两个顶点都连通,则称为连通无向图连通有向图:如果有向图任意两个顶点vi,vj,从vi到vj和从vj到vi都有路.径,则称有向图是强连通有向图.在这个连通性检测在中,大致原理是这样的:令图的连通矩阵为M,为单位矩阵,只需计算,其中n是节点个数,中第行第列元素为0的话,表示从节点到节点不可达。是基于离散数学的知识,有些细节仍在学习中。首先就是graph类public class Graph { /** * The conne

2022-04-14 10:00:00 238 1

原创 日撸 Java 三百行学习笔记day31

第 31 天: 整数矩阵及其运算感觉内容还是挺多的今天,矩阵就相当于是数组里面还有数组。由于代码太长,我就贴出相对核心的部分。1.矩阵加法运算矩阵之间也可以相加。把两个矩阵对应位置的单个元素相加,得到的新矩阵就是矩阵加法的结果。由其运算法则可知,只有行数和列数完全相同的矩阵才能进行加法运算。矩阵之间相加没有顺序,假设A、B都是矩阵,则A+B=B+A。通常认为矩阵没有减法,若要与一个矩阵相减,在概念上是引入一个该矩阵的负矩阵,然后相加。A-B是A+(-B)的简写。图演示了两个三行三列矩阵的加法

2022-04-13 10:00:00 143 1

原创 日撸 Java 三百行学习笔记day29-30

第 29 天: Huffman 编码 (建树)对于哈夫曼树的构造,最重要是要理解到它的核心思想:所有叶子结点的带权路径长度之和最小。所以在建树的过程中我们需要知道如何来完成这一要求,即我们应该尽可能地让权值大的叶子结点靠近根结点,让权值小的叶子结点远离根结点。至于它的具体构造规则就不再细说,自底向上的方法应当都做过初步了解的,毕竟学计算机的嘛。依据昨天接着,先初始化charMapping数组,使其每一个元素值为-1.然后在从输入的字符中统计每一个字符出现的次数放入tempCharCounts之中。之

2022-04-12 20:28:56 131 2

原创 日撸 Java 三百行学习笔记day28

第 28 天: Huffman 编码 (节点定义与文件读取)从这开始感觉真的有点麻烦了,而且出现了很多没有怎么接触的东西,查阅了很多。特别是文件那一块的东西。什么是哈夫曼树?要理解什么是哈夫曼树,首先要理解几个概念路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。路径长度:路径上的分支数目。树的路径长度:从树根到每一个结点的路径长度之和。(完全二叉树就是树的路径长度最短的二叉树)考虑带权的结点结点的带权路径长度:从该结点到树根之间的路径长度和结点上权的乘积。

2022-04-10 10:00:00 96 1

原创 日撸 Java 三百行学习笔记day27

第 27 天: Hanoi 塔问题:这个问题起源于一个类似传说故事,在Hanoi这个地方有一个寺庙,这里有3根柱子和64个大小不同的金碟子。每个碟子有一个孔可以穿过。所有的碟子都放在第一个柱子上,而且按照从上到下碟子的大小依次增大的顺序摆设。如下图:现在,假定寺庙里的僧侣要移动这些碟子,将它们从最左边移动到最右边的柱子上。不过移动的规则如下:1. 每次只能从一个柱子的最上面移动一个碟子到另外一个柱子上。2. 不能将大碟子放到小碟子的上面。咋一看代码很短,估计会很简单,但是仔细一看居然

2022-04-09 10:00:00 73 1

原创 日撸 Java 三百行学习笔记day26

第 26 天: 二叉树深度遍历的栈实现 (前序和后序)今天的内容也是连接着昨天的内容,对于前序其实和中序差不多,前序与中序的区别, 仅仅在于输出语句的位置不同。既然能理解昨天的内容,那前序当然也不在话下。其实相对难想的是后序。先给出代码/** ********************* * Pre-order visit with stack. ********************* */ public void preOrderVisitWithStack() { Ob

2022-04-08 10:00:00 215 1

原创 日撸 Java 三百行学习笔记day25

第 25 天: 二叉树深度遍历的栈实现 (中序)感觉今天的理解起来很快,上手很快,冥冥中有点进步了属于是。二叉树的中序遍历之前也做过,但是是用的递归,今天的则是用的栈,稍微可能会麻烦一点,但是熟悉了也还好,就是出栈入栈,依次记录。25.1:那首先的肯定是建栈了,这个操作相信都很熟悉了,直接上代码,需要唯一注意的就是其中depth所指位置。package day17;public class ObjectStack { /** * The depth. */ public s..

2022-04-07 10:00:00 219

原创 日撸 Java 三百行学习笔记day24

第 24 天: 二叉树的建立增加了一个构造方法,使用一个线性表先分配所有节点的空间, 再将节点链接起来。代码不长,好好领会。/** ********************* * The second constructor. The parameters must be correct since no validity * check is undertaken. * * @param paraDataArray The array for data. * @p

2022-04-06 10:00:00 257 1

原创 日撸 Java 三百行学习笔记day23

第 23 天: 使用具有通用性的队列今天相当于是一个对于队列的升级吧,又是学习新知识的一天,从专一类型所用的队列升级为通用类型的。程序的架构也就是说对于数据的操作感觉差不多,但是不同的是这个方式提高了代码的复用性,减少了代码量,用途更为广泛。直接上核心code先public void toDataArraysObjectQueue() { // Initialize arrays. int tempLength = getNumNodes(); valuesArray = new c

2022-04-05 10:00:00 70 1

原创 日撸 Java 三百行day22学习笔记

第 22 天: 二叉树的存储今天的代码与18天的循环队列还有21的二叉树代码有很大关联。二叉树的存储同样有两种方法,今天对应博客里也已提到:1:空使用 0 来表示, 可以用一个向量来存储:[a, b, c, 0, d, e, 0, 0, 0, f, g]优点: 仅需要一个向量, 简单直接.缺点: 对于实际的二叉树, 很多子树为空, 导致大量的 0 值.2: 应使用压缩存储方式, 即将节点的位置和值均存储. 可表示为两个向量:[0, 1, 2, 4, 5, 9, 10][a, b, c,

2022-04-04 10:00:00 225 1

原创 日撸 Java 三百行day21

第 21 天: 二叉树的深度遍历的递归实现今天的任务主要是递归,感觉递归之前接触相对较少,稍微陌生一点,多看多练吧。一、概念二叉树:树的度为2(树中每个节点最多有两个度),树的度就是树中最大节点度。遍历:把每个数据访问(visit)一遍,访问:打印、比较、修改,可以是各种复杂计算或者创建/删除节点。深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度二、遍历1、先序遍历:先访问根节点、再访问左子树、再访问右子树2、中序遍历:先访问左子树、再访问

2022-04-03 10:00:00 416 2

原创 日撸 Java 三百行学习笔记day20

今天是对几个问题的回答。1.面向对象与面向过程相比, 有哪些优势? 注: 第 1 - 10 天的程序, 就是面向过程的.答:首先还是要区分面向对象和面向过程,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。都是在拆分,但是一个是按流程拆分整个事件,一个是分成不同对象角色来拆分。我个人认为面向对象的话可塑性更高,修改

2022-04-02 10:00:00 405 3

原创 日撸 Java 三百行学习笔记day19

第 19 天: 字符串匹配字符串匹配原理简单,但是对于代码有一点疑问,主要是基础的不牢固,对语法的理解不太行,核心思想没有什么问题。先上今天打的代码。package day17;public class MyString { public static final int MAX_LENGTH = 10; char[] data; int length; public MyString() { length = 0; data = new char[MAX_LENGTH];

2022-04-01 10:00:00 178 2

原创 日撸 Java 三百行学习笔记day18

第 18 天: 循环队列对于循环队列,有多种方式来实现,这里采用的是一种牺牲一个单元来区分队空和队满,入队时少用一个队列单元,即约定以"队头指针在队尾指针的下一位置作为队满的标志"。队满条件为:(rear+1)%QueueSize==front队空条件为:front==rear代码如下:package day17;public class CircleCharQueue { public static final int TOTAL_SPACE = 10; int head

2022-03-31 10:00:00 262 1

原创 日撸 Java 三百行学习笔记day17

第 17 天: 链队列队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。package day17;public class Queue { /** * An inner class. */ class Node { /** * The data. */ int data; /** * The reference to the next node. */ Node next; /** ******

2022-03-30 10:30:11 138

原创 日撸 Java 三百行学习笔记day16

第 16 天: 递归递归的思想以此类推是递归的基本思想。具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。递归的两个条件可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。(自身调用) 存在一种简单情境,可以使递归在简单情境下退出。(递归出口)递归三要素:一定有一种可以退出程序

2022-03-09 10:00:00 137 1

原创 日撸 Java 三百行学习笔记day15

第 15 天: 栈的应用(括号匹配)在数据处理中,常常要判断数据中的括号,应用栈来处理及其方便。当用户输入一个字符串时,遇到左括号时,将其入栈,如’(’ ‘[”’{,而遇到右括号时,如’)”}”]’时,与栈顶的括号与当前匹配,如果匹配成功,则将栈中的括号出栈,表示当前括号成对。如匹配失败,又分为两种情况,栈已经空和栈不空,若栈已空,则现在右括号比左括号多()},栈不空则很明显,当前括号与栈中括号不匹配(}.当所有的匹配完成,也有两种状态,栈空或不空,栈空,当前字符串中所有字符匹配成功,栈不空..

2022-03-07 10:45:00 200 1

原创 日撸 Java 三百行学习笔记day14

第 14 天: 栈栈是一种只允许在一端进行插入或删除的线性表。1、栈的操作端通常被称为栈顶,另一端被称为栈底。2、栈的插入操作称为进栈(压栈|push);栈删除操作称为出栈(弹栈|pop)。特点  栈就像一个杯子,我们只能从杯口放和取,所以栈中的元素是“先进后出”的特点。存储结构  顺序存储的栈称为顺序栈;链式存储的栈称为链式栈。package day10;public class Stack { public static class CharStack { /*

2022-03-05 11:00:00 360 2

原创 日撸 Java 三百行学习笔记day13

第 13 天: 链表链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。  使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。这一次我们构造的链表是较为基础的链表。先大致将框架给出。开头是对节点,链表的定义。在node这个类里有nod.

2022-03-04 10:30:00 205 1

原创 日撸 Java 三百行学习笔记day12

第 12 天: 顺序表(二)这一次是对顺序表一些操作进行编程。package day10;public class Sq1 { /** * Sequential list. */ public static class SequentialList { /** * The maximal length of the list. It is a constant. */ public static final int MAX_LENGTH = 10; /

2022-03-03 10:30:00 143 2

原创 日撸 Java 三百行学习笔记day11

第 11 天: 顺序表(一)顺序表是一个比较重要的数据结构。顺序表由一个数组和一个代表有效数字个数的整数组成。它的特点有以下:一:逻辑上相邻的数据,在物理存储的位置上也是相邻的。二:存储密度高,需要预先分配空间。后续的代码可以看到。三:便于随机存取。四:但是它存储结构跟数组是一样,所以也就不便于插入和删除。当顺序表较大时,插入和删除都会引起大量数据的移动。如果插入和删除频繁操作的话,最好使用链表的数据结构。顺序表一般存储不经常变动的数据。创建一个类,且常量用 final 修饰MAX_LEN

2022-03-02 10:30:00 190 1

空空如也

空空如也

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

TA关注的人

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