自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 资源 (1)
  • 收藏
  • 关注

原创 tf.Keras (tf-1.15)使用记录4-model.fit方法及其callbacks参数

也可以通过继承类来创建自定义回调,允许在训练的不同阶段执行自定义的逻辑。# 每个 epoch 结束时执行print(f"结束 epochclass CustomCallback(tf . keras . callbacks . Callback) : def on_epoch_end(self , epoch , logs = None) : # 每个 epoch 结束时执行 keys = list(logs . keys()) print(f"结束 epoch {epoch } ,损失 = {

2025-02-01 19:38:23 1216

原创 tf.Keras (tf-1.15)使用记录3-model.compile方法

是 TensorFlow Keras 中用于配置训练模型的方法。在开始训练之前,需要通过这个方法来指定模型的优化器、损失函数和评估指标等。

2025-02-01 19:17:43 803

原创 tf.Keras (tf-1.15)使用记录2-基于tf.keras.layers创建层

注意需要继承tf.keras.layers.Layer父类,以及注意传入**kwargs关键字参数。self.add_weight方法是用来初始化模型参数的。# 使用自定义层创建模型MyDenseLayer(32, activation='relu', input_shape=(222,)), # 注意这个input必须指定])call函数的输入inputs就是固定的,build函数每次实例化只调用一次。')# 确保输入是一个包含三个元素的列表else:self.n = n。

2025-02-01 18:42:18 687

原创 tf.Keras (tf-1.15)使用记录1-基础模型创建的两种方法

tf.keras有两种神经网络的创建方法,分别是基于sequential的方式创建和基于functional的方式创建。其中基于functional的方式创建更为灵活,更容易自定义网络中的细节;基于sequential的方式创建则更加简单。

2025-02-01 17:29:16 200

原创 tf.keras保存.h5模型文件时报错“ValueError:Unable to create group(name already exists)“的解决方案

后来打印my_model的layer name,真的有上面说的这类问题。

2025-01-10 19:31:48 219

原创 tensorboard快捷应用

【代码】tensorboard快捷应用。

2025-01-07 19:55:44 243

原创 Leetcode 983. 最低票价

这道题满足最大最小问题,大概率就是用动态规划。接着,发现当days长度为1时最简单,因此递推方向一定是从n到n-1。假设n-1的问题解决了,那就研究从n-1转移到n有几种不同情况,取动作的最小值即可。这道题自己写的有点麻烦,但是很朴素;有个技巧是按照天来递推而不是索引,这道题属于灵活转化索引与值的范畴。2、边界值容易搞混,要分清循环到终止点和循环到头这两种不同情况。1、循环的方向不要写反了。

2024-10-20 21:47:05 273

原创 Leetcode 486. 预测赢家

这道题最难的地方在于,需要把输赢建模成“净胜分”,这样就能把两个主体合并为一个主体去动态规划。在明白了这一点之后,5分钟就自己写出来了。这道题最开始想到的做法是回溯,因为看起来遍历就可以做,但是又想到同时需要维护两个人的数据就有点懵了。后来提示说用动态规划做是OK的。这道题的本质和hot100里那个 乘积最大子数组 需要区分正负数一样,这里也需要区分两个人来分别递推。1、注意当递推到第二个人手里时,需要求得是一个最小值而不是最大值。

2024-10-09 21:23:11 498 1

原创 深度学习与数学归纳法

这个思想其实和数学归纳法里面的先假设某个条件成立,再去做其他事情,然后再反过来优化这个条件很像,也和EM估计的思想很像。最近发现,深度学习可以分为两个主要的阶段,分别是前向推理以及反向传播,分别对应着网络的推理和参数训练两个步骤。这也可以解释为什么很多网络结构的改进的论文,本质上是提供了参数交互的接口,让网络有机会对某种类型的数据进行建模和表征,然后再去对其进行训练。在做参数训练的时候,本质上是在利用历史数据求网络参数的先验分布;在推理的时候,本质是在基于训练好的参数进行极大似然估计。

2024-09-28 13:19:44 696

原创 Leetcode 206. 反转链表

这道题三番五次地做错,总是想着交换首尾链表的位置,其实正确的做法就是从头到尾两两交换链表的指针方向即可。

2024-09-28 12:00:16 392

原创 均匀合并列表

这道题可以按照两两合并的归并思路来做,不过最优的做法还是将元素转化为索引的优先级来通过排序解决。给定一个二维列表,均匀合并成一个一维列表,使得列表中原始元素所在位置尽可能均衡。

2024-09-27 22:30:30 230

原创 Leetcode 3290. 最高乘法得分

1、第一次做周赛的题,第一眼发现和之前hot100里面有一道两个子序列的dp很像,写完之后发现又是像之前一样超时,大概97ac。这道题最神奇的地方在于,如果下面这个递推的max顺序反过来就会超内存。感觉用递归解动态规划还是有一定的限制的其实。而且下面这个解答的初始判断条件的顺序也不能变,第一感觉dp问题好像用递归性价比不是很高。2、看了灵神的题解,发现主要问题出在建模没建好,还是应该以选or不选去考虑递推。3、在dp中还是尽量少用循环去表示选哪个的方式。

2024-09-15 21:23:58 312 1

原创 全面理解tensor编程中矩阵的行和列

c = torch.matmul(a, b.transpose(2, 3)) # 交换b的2,3两个维度注意.dot方法只适用于两个向量的点积运算, torch.matmul是矩阵乘法运算。

2024-09-15 13:38:47 556

原创 python dir()函数

这是一个非常神器的函数,作用是解析某个对象或者类的所有内置方法,非常好用。当某些包忘记要引用的具体拼写时,也可以用dir来看。这个东西真是编程的神器。

2024-09-15 00:34:31 383

原创 python strip()函数使用

本质原因是因为第一次的字符串b前面有一个空格。默认情况下去除字符串首尾的空格和换行符号;

2024-09-05 18:40:00 582

原创 Leetcode 146. LRU 缓存

1、这道题本质是要求一个可以排序的字典(因为O(1)的时间复杂度就是字典),所以要不就用collections自带的OrderDict,要不然就用字典加双头链表自己实现一个。.move_to_end(key, last=False):把元素后移一位,last=True的话就是移动到最后。.popitem(last=True):把最后位置的元素pop出去。

2024-08-31 12:49:40 598

原创 Leetcode 621. 任务调度器

2、思路:先统计最大频率出现的元素用来做分隔板,然后再去考虑插入的问题,与排列组合的思想一致。1、这道题是一个贪心算法,解法主要是按照排列组合里的插入方法去思考。

2024-08-31 12:06:54 495

原创 深度学习中Embedding的理解

Embedding的加法一般用于同类目的合集表示。就是因为不同one-hot做加法之后得到的向量可以反过来推断出包含了哪些向量,虽然序列信息无法放到里面。Embedding这个概念翻译过来的意思就是嵌入,就是把一个大的东西想办法嵌入到一个小的地方。例如,历史时间一般会按照1天内,7天内,30天内,一年内进行离散化再去embedding。此外,Embedding还多用于多模态特征的融合,因为多种模态数据最后都是汇聚到向量表示。Embedding拼接一般用于不同类目的合集,一般用拼接的方式放到神经网络去。

2024-08-29 00:36:34 598

原创 Leetcode 15.三数之和

【代码】Leetcode 15.三数之和。

2024-08-27 14:15:34 436

原创 Leetcode 72.编辑距离

1、边界条件需要限定到:j+1 or : i+1。

2024-08-25 10:43:43 328

原创 Leetcode 78. 子集

1、也是和组合一样通过控制starti来控制visited,唯一不同的就是收集路径的位置。

2024-08-24 00:28:52 268

原创 Leetcode 46.全排列

1、回溯本质就是搜索树的树枝,维护三个核心变量:path(需要恢复现场),visited(需要恢复现场),以及res。

2024-08-23 14:15:15 270

原创 PyTorch踩坑记录1

因为model.eval()控制self.training参数,只有用nn.Dropout(0.5)声明才能在调用model.eval()后关闭,用F.dropout(x, p=0.5)是没办法自动关闭的,需要手动把self.training的参数传入到F.dropout()里才行。网上查到是因为model.eval()会影响继承nn.module类的self.方法的训练和测试,但是F.dropout更像是一个函数没继承nn,module。

2024-08-22 21:48:41 379

原创 Leetcode 347. 前 K 个高频元素

【代码】Leetcode 347. 前 K 个高频元素。

2024-08-22 15:19:04 278

原创 Leetcode 142. 环形链表 II

1、注意里面的判断条件,虽然代码少但是其实逻辑很多。

2024-08-20 20:24:03 235

原创 Leetcode 647. 回文子串

判断区间i, j内是否是回文子串,递归去处理即可。

2024-08-20 14:49:38 362

原创 Leetcode 152. 乘积最大子数组

1、需要按照正负数以及最大最小值的转化去考虑进行动态规划。2、根据nums[i]的正负进行动态规划。

2024-08-20 14:04:26 303

原创 注意力机制和门控机制的区别

感觉理解好注意力机制,还是得从mlp -> rnn -> gru -> seq2seq -> encoder-decoder -> attention ->mha ->transformer的顺序,以及序列的角度去理解。门控机制的核心是sigmoid或者tanh,指的是单纯的对权重进行归一化,非常平滑,并且不同样本同一特征维度之间没有比较。两者有个相似点就是本质上都是给原始特征乘上一定的权重值进行特征变化,并且这个变换都是元素维度的变换(最后一步都是按位乘法做特征融合)。

2024-08-15 21:03:45 2197

原创 控制和PID的原理

微分增益 ( K_d ) 决定了误差变化率对控制器输出的影响。微分控制可以预测误差的趋势,从而提高系统的响应速度和稳定性,但对噪声敏感。比例增益 ( K_p ) 决定了误差对控制器输出的直接影响。较高的比例增益会导致较快的响应,但如果过高,可能会导致系统不稳定。PID控制器的输出 ( u(t) ) 是输入误差 ( e(t) ) 的比例、积分和微分的加权和。积分增益 ( K_i ) 决定了累积误差对控制器输出的影响。是误差,即设定值与实际值之间的差异:( e(t) = r(t) - y(t) )。

2024-08-15 13:28:56 569

原创 简单乘法attention做特征融合加权平和

将两个embedding信息进行融合最常见的方式就是加法,因为按照onehot的形式去考虑,加法能够映射出当前embedding的唯一组合形式(虽然无法看出序列关系)。里面线性层的定义最好在初始化函数定义,这个实现方式用到了batch forward的技巧。代码实现是先把两个张量拼接,然后再通过线性层计算权重,然后再去softmax。

2024-08-11 18:34:11 393 1

原创 两个embeding信息的常见融合办法

【代码】两个embeding信息的常见融合办法。

2024-08-11 17:00:44 521

原创 一个解决问题的编码思路(编程+AI向)

3、超参数方面的搜索。包括两个层面,首先在原型系统开发时应该给模型留一个类似try的超参数,用来尝试不同网络结构、损失函数的组合下模型的大概效果,一般设置手动搜索即可。其次是学习率、批归一化大小的搜索,最好采用网格搜索的方式进行自动搜索。2、方法、原理层面的搜索,定位大概要使用哪一类方法,以及方法的基本原理是什么。1、 问题层面的搜索,定位要解决的问题大类、小类,知道问题的scope在哪里,相关工作都是怎么解决的。简单记录一个最近想到的解决问题的思路,忽然想到的,有点抽象,先记下来。

2024-08-08 10:24:24 293

原创 python import zip压缩文件

python可以直接调用zip格式的压缩文件,而不需要将文件解压,保证了文件的安全性。

2024-06-05 15:47:57 204

原创 算法题代码运行时间复杂度估计

总结一下关于问题规模(n大小)与算法时间复杂度要求的关系,有时候通过问题规模就可以判断出这道题需要用什么算法。这样判断的一个好处就是可以很自然地从暴力求解的思路入手,逐步展开优化,更符合实际编程环境下的思维习惯,毕竟在实际开发时很少会真的直接想到用双指针或者动态规划解决一个编程问题。所以一般给出n的范围的地方都叫做’提示’

2024-05-06 06:06:18 863

原创 Leetcode 32. 最长有效括号

本以为要用动态规划,但是递推有点太难了;主要是第一反映hard题不能就一个栈就解决吧,结果还真就是一个栈解决了。1、在最后计算间隔时,需要前后放-1和len(s),以维持循环不变量原则。括号问题还是得栈入手,这道题考察栈+哈希表思想(其实就是数组索引)

2024-05-02 04:18:09 383

原创 Leetcode 76. 最小覆盖子串

这道题一开始以为要用动态规划来解,但是结合题目中需要返回的是最短子串本身而不是长度,因此在对于字符串s建模时至少需要维护i和j两个变量,再加上这道题没有明显的递推。c. slow驱动下一次fast更新的规则:slow指针’多‘移动一位,使得当前元素又不满足fast停下的规则了,同时让fast加1。1、这道题的难点在于边界条件,需要让fast指针停在刚好满足条件的地方,然后再用slow驱动fast。a. fast指针的更新规则:向右移动直到窗口包含了所有t中的元素。这道题是滑动窗口双指针经典问题。

2024-04-24 20:42:28 354

原创 Leetcode 42. 接雨水

这道题很久之前在看数组前缀的专题的时候见过,是一道典型的用数组前缀最大值来解决问题的题。感觉应该算是贪心思维吧。凭着之前记着的求解思路把这道题写了出来,说实话要是没遇到过这种类型的第一次见的话自己想出来这个贪心解法还是有点困难的。1、在求后缀最大值时,最好采用post_max[i] = x的赋值方式而不是post_max.append(x)

2024-04-23 04:05:20 397 1

原创 Leetcode 28. 找出字符串中第一个匹配项的下标

1、注意边界条件是匹配串needle到头,但是haystack不一定需要到头。两个字符串匹配的问题基本都可以用动态规划解决,递推关系就是依次匹配下去。2、这道题按照从i开始的字符串而不是从i结束的进行DP建模。

2024-04-19 00:55:38 256 2

原创 Leetcode 53. 最大子数组和

子数组的和是可以通过前面的和加上当前值递推获得,所以可以用动态规划解决这道题。1、这道题再获取最大值时res不能用0而需要用负无穷初始化。

2024-04-18 17:00:43 404

原创 Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

这道题最难的地方在于需要‘课题分离’,把查找出满足target的第一个元素的二分查找函数分离出来,然后再加一些细节即可。

2024-04-18 16:52:18 314

pyqt_diaoyong_multiwindow.zip

使用PyQt4 + QT designer + python3.7环境搭建了一套多窗口调用的模板,里面包括配置好的调用关系,以及一些按钮事件框架,还有部分QSS内容。

2019-06-28

空空如也

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

TA关注的人

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