数据分析-深度学习 Day4

news2025/1/23 23:29:57

本专栏主

本专栏主要介绍和讲解李宏毅老师最新2021春季机器学习课程相关内容,如有记录错误,或理解不对,欢迎留言批评指正...

youtube课程地址:(实时更新)

ML 2021 Springspeech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html

B站课程地址:

哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibilispace.bilibili.com/13606211?spm_id_from=333.788.b_765f7570696e666f.1

目录:

第一节 机器学习&深度学习介绍

第二节 机器学习攻略

一、机器学习的框架

二、模型训练攻略

三、针对Optimization Issue的优化,类神经网络训练不起来怎么办

(一) 局部最优点和鞍点

(二) 批处理和momentum

(三) 自动调节学习率Learning rate

(四) 损失函数带来的影响

第三节 CNN & Self-Attention

一、卷积神经网络

二、自注意力模型

第四节 Transformer & BN

一、Transformer

二、Batch Normalization

待更新.......

一、Transformer

讲Transformer之前,需要先讲讲seq2seq模型,因为transformer本质上就是一个seq2seq的model,对于一个seq2seq的模型,有下面几种可能的输入输出形式:

输入语音,输出文字(语音辨识,不翻译)

输入文字,输出文字

输入语音,输出文字(语音翻译)

NLP任务中很多问题其实都可以用seq2seq的模型来解决问题,比如下面的语法剖析,输入一段文字,输出这段文字的语法结构:

还有在Multi-label Classification问题上,用seq2seq的方法,让模型自己决定输出多少个类别。

还有就是在目标检测问题上,可以用seq2seq的方法,直接预测出物体的bounding box和class。

seq2seq模型由两个部分组成,一部分是Encoder,还有一部分是Decoder,我们先来看看Encoder部分。

Transformer之Encoder

通常情况下,我们会用RNN或者CNN的方式,对输入进行Encoder,如下所示,通常编码层也会有很多层叠加在一起,即下图中的每个Block,每个Block都是输入一排向量,输出一排向量,而transformer的encoder就是这一个个的Block,只不过它的设计有些特殊,

假如输入是一排vector,输出是一排vector,不过它的输出是先基于self-attention算出每个vector a ,然后采用residual模块得到 a+b ,然后通过Layer Normalization(注意不是batch Normalization),做法是不用考虑batch的信息,而是针对每个vector计算它的mean和standard,然后再标准化输出,然后再经过FC层,这边也会有一层residual层,最后再做一次Layer Normalization得到输出,这个就是整个transformer的encoder的做法(单个Head,多个Head每个Head的做法是一样的),可参考下面两张图。

上面的这种transformer架构设计是最原始的一种,当然也有很多变种,如下图(a)是transformer架构,图(b)是改进后的transformer架构。

2. Decoder之Autoregressive

Decoder要做的事情就是完成模型的最终输出,我们以语音辨识为例,Decoder的输入以Encoder的输出为输入,同时在一开始给定一个【BOS】这样的,类似于开始符这样的special token,然后得到第一个token的输出(向量),然后我们经过softmax的操作得到每个word的分数,然后我们把前面那个word的Decoder输出当做下一个生成word的输入(也就是下图中的“机”字),知道遇到停止符号【EOS】为止,这就是Autoregressive(自回归),这里有个问题就是,其中某一步预测出错都会影响下一步的生成结果。

好,以上讲的是一般情况下的Decoder模型,接下来我们看看Transformer的Decoder部分,先来比较一下Transformer的Encoder部分和Decoder部分的差异,主要的差异就在灰色区域盖住部分,其次是在Decoder部分,attention mask并不是全链接的,而是上三角类型,只能看到前面部分,而看不到后面部分。

3. Decoder之Non-autoregressive

因为autoregressive的方式通常是串行输出,需要知道前一个生成结果,然后再根据前一个生成的结果进行下一个结果的生成,这样通常效率会很低,而NAT就摆脱了这个问题,一次性给入所有的START的输入token,然后一次性输出所有要预测的token,但是这里有个问题,就是不知道输出多长,关于这个问题,有下面两种方法可以解决:

设计一个可以预测输出length的预测器,来告诉Decoder要输出多长

一次性给入Decoder部分很长的输入,然后全部生成,在【EOS】符号处做截断

但是通常情况下,NAT的效果比AT差很多,原因是Multi-modality,更多关于NAT的视频讲解可以参考以下链接:

https://www.youtube.com/watch?v=jvyKmU4OM3cwww.youtube.com/watch?v=jvyKmU4OM3c

4. Transformer 之 Decoder

接下来我们聊聊transformer的decoder是怎么做的,那前面有说,Decoder部分和Encoder部分主要的差别是在中间那块Multi-Head attention部分,这部分在transformer中采用的是Cross-attention,如下图所示,Decoder部分的输出依旧是采用串行的方式输入,(输入方式:会全部给与,但第一次只有START这个输入会去做预测,同时Attention mask保证它看不到后面的单词,当预测完第一个word之后,会把结果作为第二个单词的输入,同样Attention mask只能保证它只能看到前面的单词信息),而Cross-attention的方式就是每次的self-attention的输出都会与encoder部分做attention,然后经过fc层线性层做变换。

关于seq2seq的训练方式,就是采用cross-entropy,但是我们在训练的时候会把正确答案当做Decoder的输入进行预测下一个token,这个方式就是Teacher Forcing,对每个单词都要计算,然后目标就是让这些总的cross-entropy达到最小,在预测的时候是一个一个去预测的。

5. 关于seq2seq模型设计的一些tips

比较有用的就是copy mechanism,guide-attention,Beam search,这部分可以参考我整理的生成模型综述的文章(挖个坑,待补充)

视频最后有讲到,在实际测试的过程中,我们会用到BLEU score作为评判指标,但是在训练的时候,我们则是采用cross-entropy做training的,我们能不能在training的时候直接用BLEU的指标呢,答案是不行的,因为不可导,不过遇到这种情况,遇到optimize不能解决的问题,通常可以用强化学习的方式硬train一发就可以了(口诀),遇到无法optimize的loss function,把它当做是RL的reward把Decoder当做是agnet,把这个问题当做是RL的问题,当然这个比较难了。

二、Batch Normalization

我们在"模型训练攻略"这一节中有讨论到,如果我们模型训练的损失函数在一开始的时候就是比较平滑的,那么模型就不那么容易陷入到局部最优解,也就是说我们希望损失函数的Landaspace 能够越平滑越好。

Honda:李宏毅2021机器学习【week2】:模型训练攻略6 赞同 · 0 评论文章

首先,我们来看一下损失函数曲面出现凹凸不平的原因是什么,假设,现在有一个非常非常简单的model,它的输入是 x1 和 x2 ,模型的输出是 y=w1x1+w2x2+b ,损失函数是 L=Σ(y^−y)2 ,那什么情况下会出现凹凸不平,不太好train的loss呢,一个可能的原因就是, x1 很小, x2 很大,这个时候,当 w1 发生微小的变化的时候, L 也会有一个微小的变化,但是由于 x1 很小,就会导致 L 的变化不是太大,也就是说loss曲面上 w1 方向上曲面的是平滑的,反之 w2 方向上曲面的是陡峭的。

因此,我们会发现,当我们input feature每个维度的值差距很大的时候,就可能产生出loss曲面凹凸不平的现象,那有没有可能我们让不同维度的值都存在一个相同的区间内呢?下面就介绍一常用的方法。通常这类方法有一个专有名词:Feature Normalization

比较常见的做法是对于所有训练资料的feature vector {xi}i=1R ,我们对不同资料的每一维(每一维都是一vector)都进行归一化操作,假设第 i 维的平均值是 mi ,标准差是 σi ,则归一化之后 x~ir←xir−miσi ,对每一维都进行归一化操作,这样的话,每一维最后的平均值都是接近于0,方差都接近于1。

那通常情况下,在深度学习的网络框架下,我们不仅仅需要对输入信号做Feature Normalization,因为层数比较多,每一层做了一次变换,因此对每一层的输出,我们都需要做Feature Normalization,至于Feature Normalization在激活函数之前还是之后都是一样的。

参考下图,我们再来看一下,下图中的每一行都是一个样本资料,图中给了batch=3的情况,假设我们对 z1 做了微小的改动,那本来是只会影响到 a1 的输出,然后由于做了Feature Normalization, μ 和 σ 都会发生相应的变化,这会间接影响到每个 ai 的输出,因此,在做了Feature Normalization之后,每个输入都变得相互关联了,这样的话,我们将所有输入资料和网络看做是一个大的网络,但有时候训练的样本会很多,这个时候就会采用Batch Normalization的方式进行处理, z~i=zi−μσ 。

在Batch Normalization的时候,往往还会多一个步骤,就是会点乘以 γ ,再加上 β , z^=γ⊙z~i+β ,其中 γ 和 β 都是可学习的参数,(这块再补充一下)

那在testing的时候,其实就不需要算每个batch的 μ 和 σ ,在pytorch里面,会自动帮你计算好每个batch下的 μ 和 σ,假如就算出了 t 个batch的 μ 和 σ,那么会先对这 t 个 μ 和 σ取平均,得到 μ¯ 和 σ¯ ,然后通过 μ¯←pμ¯+(1−p)μtσ¯←pσ¯+(1−p)σt

计算出需要存储的 μ¯ 和 σ¯,其中 p 也是超参数,不过一般设定为0.1。

为什么BN会有效呢?

主要的原因还是改变了error surface,使得它不那么崎岖。(这里还可以做些补充)

要介绍和讲解李宏毅老师最新2021春季机器学习课程相关内容,如有记录错误,或理解不对,欢迎留言批评指正...

youtube课程地址:(实时更新)

ML 2021 Springspeech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html

B站课程地址:

哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibilispace.bilibili.com/13606211?spm_id_from=333.788.b_765f7570696e666f.1

目录:

第一节 机器学习&深度学习介绍

第二节 机器学习攻略

一、机器学习的框架

二、模型训练攻略

三、针对Optimization Issue的优化,类神经网络训练不起来怎么办

(一) 局部最优点和鞍点

(二) 批处理和momentum

(三) 自动调节学习率Learning rate

(四) 损失函数带来的影响

第三节 CNN & Self-Attention

一、卷积神经网络

二、自注意力模型

第四节 Transformer & BN

一、Transformer

二、Batch Normalization

待更新.......

一、Transformer

讲Transformer之前,需要先讲讲seq2seq模型,因为transformer本质上就是一个seq2seq的model,对于一个seq2seq的模型,有下面几种可能的输入输出形式:

输入语音,输出文字(语音辨识,不翻译)

输入文字,输出文字

输入语音,输出文字(语音翻译)

NLP任务中很多问题其实都可以用seq2seq的模型来解决问题,比如下面的语法剖析,输入一段文字,输出这段文字的语法结构:

还有在Multi-label Classification问题上,用seq2seq的方法,让模型自己决定输出多少个类别。

还有就是在目标检测问题上,可以用seq2seq的方法,直接预测出物体的bounding box和class。

seq2seq模型由两个部分组成,一部分是Encoder,还有一部分是Decoder,我们先来看看Encoder部分。

Transformer之Encoder

通常情况下,我们会用RNN或者CNN的方式,对输入进行Encoder,如下所示,通常编码层也会有很多层叠加在一起,即下图中的每个Block,每个Block都是输入一排向量,输出一排向量,而transformer的encoder就是这一个个的Block,只不过它的设计有些特殊,

假如输入是一排vector,输出是一排vector,不过它的输出是先基于self-attention算出每个vector a ,然后采用residual模块得到 a+b ,然后通过Layer Normalization(注意不是batch Normalization),做法是不用考虑batch的信息,而是针对每个vector计算它的mean和standard,然后再标准化输出,然后再经过FC层,这边也会有一层residual层,最后再做一次Layer Normalization得到输出,这个就是整个transformer的encoder的做法(单个Head,多个Head每个Head的做法是一样的),可参考下面两张图。

上面的这种transformer架构设计是最原始的一种,当然也有很多变种,如下图(a)是transformer架构,图(b)是改进后的transformer架构。

2. Decoder之Autoregressive

Decoder要做的事情就是完成模型的最终输出,我们以语音辨识为例,Decoder的输入以Encoder的输出为输入,同时在一开始给定一个【BOS】这样的,类似于开始符这样的special token,然后得到第一个token的输出(向量),然后我们经过softmax的操作得到每个word的分数,然后我们把前面那个word的Decoder输出当做下一个生成word的输入(也就是下图中的“机”字),知道遇到停止符号【EOS】为止,这就是Autoregressive(自回归),这里有个问题就是,其中某一步预测出错都会影响下一步的生成结果。

好,以上讲的是一般情况下的Decoder模型,接下来我们看看Transformer的Decoder部分,先来比较一下Transformer的Encoder部分和Decoder部分的差异,主要的差异就在灰色区域盖住部分,其次是在Decoder部分,attention mask并不是全链接的,而是上三角类型,只能看到前面部分,而看不到后面部分。

3. Decoder之Non-autoregressive

因为autoregressive的方式通常是串行输出,需要知道前一个生成结果,然后再根据前一个生成的结果进行下一个结果的生成,这样通常效率会很低,而NAT就摆脱了这个问题,一次性给入所有的START的输入token,然后一次性输出所有要预测的token,但是这里有个问题,就是不知道输出多长,关于这个问题,有下面两种方法可以解决:

设计一个可以预测输出length的预测器,来告诉Decoder要输出多长

一次性给入Decoder部分很长的输入,然后全部生成,在【EOS】符号处做截断

但是通常情况下,NAT的效果比AT差很多,原因是Multi-modality,更多关于NAT的视频讲解可以参考以下链接:

https://www.youtube.com/watch?v=jvyKmU4OM3cwww.youtube.com/watch?v=jvyKmU4OM3c

4. Transformer 之 Decoder

接下来我们聊聊transformer的decoder是怎么做的,那前面有说,Decoder部分和Encoder部分主要的差别是在中间那块Multi-Head attention部分,这部分在transformer中采用的是Cross-attention,如下图所示,Decoder部分的输出依旧是采用串行的方式输入,(输入方式:会全部给与,但第一次只有START这个输入会去做预测,同时Attention mask保证它看不到后面的单词,当预测完第一个word之后,会把结果作为第二个单词的输入,同样Attention mask只能保证它只能看到前面的单词信息),而Cross-attention的方式就是每次的self-attention的输出都会与encoder部分做attention,然后经过fc层线性层做变换。

关于seq2seq的训练方式,就是采用cross-entropy,但是我们在训练的时候会把正确答案当做Decoder的输入进行预测下一个token,这个方式就是Teacher Forcing,对每个单词都要计算,然后目标就是让这些总的cross-entropy达到最小,在预测的时候是一个一个去预测的。

5. 关于seq2seq模型设计的一些tips

比较有用的就是copy mechanism,guide-attention,Beam search,这部分可以参考我整理的生成模型综述的文章(挖个坑,待补充)

视频最后有讲到,在实际测试的过程中,我们会用到BLEU score作为评判指标,但是在训练的时候,我们则是采用cross-entropy做training的,我们能不能在training的时候直接用BLEU的指标呢,答案是不行的,因为不可导,不过遇到这种情况,遇到optimize不能解决的问题,通常可以用强化学习的方式硬train一发就可以了(口诀),遇到无法optimize的loss function,把它当做是RL的reward把Decoder当做是agnet,把这个问题当做是RL的问题,当然这个比较难了。

二、Batch Normalization

我们在"模型训练攻略"这一节中有讨论到,如果我们模型训练的损失函数在一开始的时候就是比较平滑的,那么模型就不那么容易陷入到局部最优解,也就是说我们希望损失函数的Landaspace 能够越平滑越好。

Honda:李宏毅2021机器学习【week2】:模型训练攻略6 赞同 · 0 评论文章

首先,我们来看一下损失函数曲面出现凹凸不平的原因是什么,假设,现在有一个非常非常简单的model,它的输入是 x1 和 x2 ,模型的输出是 y=w1x1+w2x2+b ,损失函数是 L=Σ(y^−y)2 ,那什么情况下会出现凹凸不平,不太好train的loss呢,一个可能的原因就是, x1 很小, x2 很大,这个时候,当 w1 发生微小的变化的时候, L 也会有一个微小的变化,但是由于 x1 很小,就会导致 L 的变化不是太大,也就是说loss曲面上 w1 方向上曲面的是平滑的,反之 w2 方向上曲面的是陡峭的。

因此,我们会发现,当我们input feature每个维度的值差距很大的时候,就可能产生出loss曲面凹凸不平的现象,那有没有可能我们让不同维度的值都存在一个相同的区间内呢?下面就介绍一常用的方法。通常这类方法有一个专有名词:Feature Normalization

比较常见的做法是对于所有训练资料的feature vector {xi}i=1R ,我们对不同资料的每一维(每一维都是一vector)都进行归一化操作,假设第 i 维的平均值是 mi ,标准差是 σi ,则归一化之后 x~ir←xir−miσi ,对每一维都进行归一化操作,这样的话,每一维最后的平均值都是接近于0,方差都接近于1。

那通常情况下,在深度学习的网络框架下,我们不仅仅需要对输入信号做Feature Normalization,因为层数比较多,每一层做了一次变换,因此对每一层的输出,我们都需要做Feature Normalization,至于Feature Normalization在激活函数之前还是之后都是一样的。

参考下图,我们再来看一下,下图中的每一行都是一个样本资料,图中给了batch=3的情况,假设我们对 z1 做了微小的改动,那本来是只会影响到 a1 的输出,然后由于做了Feature Normalization, μ 和 σ 都会发生相应的变化,这会间接影响到每个 ai 的输出,因此,在做了Feature Normalization之后,每个输入都变得相互关联了,这样的话,我们将所有输入资料和网络看做是一个大的网络,但有时候训练的样本会很多,这个时候就会采用Batch Normalization的方式进行处理, z~i=zi−μσ 。

在Batch Normalization的时候,往往还会多一个步骤,就是会点乘以 γ ,再加上 β , z^=γ⊙z~i+β ,其中 γ 和 β 都是可学习的参数,(这块再补充一下)

那在testing的时候,其实就不需要算每个batch的 μ 和 σ ,在pytorch里面,会自动帮你计算好每个batch下的 μ 和 σ,假如就算出了 t 个batch的 μ 和 σ,那么会先对这 t 个 μ 和 σ取平均,得到 μ¯ 和 σ¯ ,然后通过 μ¯←pμ¯+(1−p)μtσ¯←pσ¯+(1−p)σt

计算出需要存储的 μ¯ 和 σ¯,其中 p 也是超参数,不过一般设定为0.1。

为什么BN会有效呢?

主要的原因还是改变了error surface,使得它不那么崎岖。(这里还可以做些补充)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sxs卡数据怎么恢复?分享三种恢复方案

说起sxs卡,你们是否有所了解呢?sxs卡具有很好的传输性能,能够存储照片和视频数据,主要被放置在索尼XDCAM EX型摄像机上。而在使用sxs卡设备过程中,难免和其他设备一样,容易出现数据丢失情况。而如果丢失的是…

在虚拟机上安装win11

虚拟机版本呢vmware16win11镜像:zh-cn_windows_11_business_editions_version_22h2_updated_dec_2022_x64_dvd_0b26ca48.isoPE镜像:EasyU_v3.7.iso 通过优启通工具制作两个光驱,第一个选pe的iso,第二个选win11的iso点击开启虚拟机…

(day5) 自学Java——ArrayList集合

目录 1. ArrayList 2.集合练习 (1)添加字符串和整数,并遍历 (2)添加学生对象并遍历 (3)查找用户是否存在 (4)返回多个数据 1. ArrayList 数组有个致命的弱点,那就是创建时需要指定其长度,并且在使用时长度不可改变。 在Java教程中知道…

[ 数据结构 ] 图(Graph)--------深度优先、广度优先遍历

0 基本介绍 为什么要有图? 无论是线性表还是树结构,局限于表示一个直接前驱和一个直接后继的关系(一对一/一对多),当我们需要表示多对多的关系时, 这里我们就用到了图 节点间的连接成为边,节点称为顶点,一个顶点到另一个顶点所经过的边叫路径,边有方向的叫有向图,…

js逆向-某动网演出数据获取

声明 本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负! 如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦! 前言 目标网站:aHR0cHM6Ly93d3cuc2hvd3N0YXJ0LmNv…

如何远程连接Linux系统服务器

Linux服务器远程连接方法这里给大家普及一下Linux服务器,是一台安装Ubuntu系统的工作站。这类服务器大部分用于程序员开发编程使用,说简单点就是拿来敲代码的。通常需要借助远程连接工具来连接Linux远程服务器,如xshell;putty&…

PostgreSQL实战之物理复制和逻辑复制(五)

目录 PostgreSQL实战之物理复制和逻辑复制(五) 5 流复制主备切换 5.1 判断主备角色的五种方法 5.2 主备切换之文件触发方式 5.3 主备切换之pg_ctl promote方式 5.4 pg_rewind PostgreSQL实战之物理复制和逻辑复制(五) 5 流…

Vue作业

文章目录作业1作业2作业3作业4作业1 作业:需要用data保存:商品名、单价、数量,然后显示到页面上,点击按钮可以变更数量,最小值1,减按钮不可用,最大值20,隐藏按钮 总价格应该是 单价…

酒业“新物种”的新思维:用户、品牌、模式

【潮汐商业评论/原创】中国的酒文化源远流长。古人有一万种喝酒的理由,或聚会畅饮,或独酌解忧,而餐桌是酒最常出现的地方。如今,与酒相关的场景日益多元,往往洋溢着青春的气息。一顶帐篷,三两好友围坐&…

一、数据仓库基础理论

数据仓库基础理论一、数据仓库1、概念2、数据仓库分层结构3、为什么要分层二、数据集市三、数据湖1、数据湖和数据仓库一、数据仓库 1、概念 数据仓库(Data Warehouse, DW):一个面向主题的、集成的、非易失的、反应历史变化的、用来支持企业…

哈弗品牌发布新能源越野新品类车型:H-DOG

1月6日,哈弗品牌新能源车型哈弗H-DOG在海口新能源车展亮相。哈弗H-DOG针对用户5天通勤、2天郊野、e享时刻三大使用场景打磨,满足用户“可城、可野、可电”的用车需求,是哈弗品牌在新能源轻越野上的全新探索。• 哈弗H-DOG采用了全新的潮野力量…

Sentinel降级策略-RT、异常比例、异常数

Sentinel降级—RT 1)RT:平均响应时间;配置平均响应时间为200ms,200ms内就要将请求处理完成; 2)注意:Sentinel 默认统计的 RT 上限是4900ms,超出此阈值会算作 4900ms ,若…

【PyTorch深度学习实践】05_逻辑斯蒂回归

文章目录1. 分类问题相关数据集1.1 MINIST1.2 CIFAR-102. 回归(Regression)VS分类(Classification)2.1 模型对比2.2 损失函数对比2.3 实现代码对比3. 完整代码之前使用线性回归解决的都是**回归(预测)**问题,逻辑斯蒂回归模型可以用来解决另一…

MySQL数据库:数据基本的增删改查

一、查询数据 1.查询表内所有数据 select * from 表名; 2.指定列查询 select 字段1, 字段2, …… from 表名; 3.查询字段为表达式 select 表达式1, 表达式2,…… from 表名; 4.起表名查询 如果对查询结果的字段名不满意,还可以自己进行取别名。 select 字段1 …

#Reading Paper# 【序列推荐】Session-based Recommendation with Graph Neural Networks

#论文题目:【序列推荐】SR-GNN: Session-based Recommendation with Graph Neural Networks(SR-GNN:基于会话的图神经网络推荐) #论文地址:https://arxiv.org/abs/1811.00855 #论文源码开源地址: https://github.com/C…

如何设置Windows文件夹背景为黑色?(其实就是“深色模式”)

大家好。我们直接进入正题! 如何把Windows文件夹背景改成黑色?就像下面这样。 第一步:打开 “个性化” 设置界面 这里介绍两种方法:(1)在电脑桌面 右键——》 个性化 ,如下图 (2)点击 开始——》设置 ——》个性化 ,如…

Typora+upic的配置

typora upic 的配置 背景说明 本人使用的是Mac book 的M1芯片电脑,为了方便写博客,整理了图片上传的方式; upic是一款上传图片的工具,主要为了帮助写博客上传工具使用的,方便上传图片; 配置七牛云的图床…

如何在 Kubernetes 部署 PostgreSQL

文章目录1. 简介2. 条件3. helm 部署 posgresql3.1 添加 Helm 存储库3.2 默认安装3.3 选参安装3.4 持久存储安装3.4.1 创建 PersistentVolume3.4.2 创建 PersistentVolumeClaim3.4.3 安装 Helm Chart3.4.5 连接到 PostgreSQL 客户端3.5 自定义配置 value.yaml4. 手动部署 postg…

Anaconda、CUDA、Pytorch安装

文章目录Anaconda、CUDA、Pytorch安装安装Anaconda安装CUDA安装cuDNN安装Pytorch小技巧验证原文链接: Tommy Shang的博客Anaconda、CUDA、Pytorch安装 很久没有更新博客,最近给实验室的机器安装Pytorch环境,顺手也把自己的机器装了一遍。 整…

《凤凰项目》读后感

无极限零部件公司的问题不提变更单导致变更引起很多问题,变更登记系统推行不下去不知道自己团队有多少项目在运行导致无法预估人力,进度怎么样,项目管理系统推行不下去安全部门提出各种安全问题,补丁安装审计部门提出各种审计不合…