Serverless安装第三方package并构建layer
前言前面介绍的都没有进行额外的 package 安装的过程,所以本章就重点是 如何在 serverless 中安装第三方的 packag 和 如何去构建 layer 使得 package 可以复用。 下面是后续所有例子需求: 安装 emoji package,且运行 安装方式:package 安装在本地12345678s init start-fc3-python -d demo1cd demo1 # 安装依赖touch code/requirements.txtecho "emoji==2.0.0" > code/requirements.txtpip3 install -r code/requirements.txt -t ./code emoji package 就会安装在 local 的 code 文件夹中 修改 code/index.py 123456# @code/index.pyfrom emoji import emojizedef handler(event, context): return...
微信云开发及云函数
云开发是什么如果微信小程序是前端,那么后端就是 服务器/后端代码运行/云存储/数据库等,前后端配合才是一个完整的面向服务的程序。 前后端配置,上述是正常的开发的组合。但是后端涉及到很多繁琐的步骤,比如 域名申请/域名解析/后端代码部署…一系列的问题。等解决好这些问题,时间都耗费了半天了。 微信云开发,就是为了解决上述的问题。在 微信开发者工具 中就可以一键开发 数据库/云函数/云存储,方便灵活。 相应的网站说明: 云开发 。下面就着 云函数,说明一下。 云函数 hello world 新建一个 云环境,打开 _微信开发者工具_,点击 云开发 按钮。 红色箭头是 envId,后续在代码中用上。暂时先建立一个环境 test。 ❓环境是什么? 就是用来隔离不同 云函数/数据库/云存储的 空间。可以想象,不同的环境,就等于不同的房子;不同的房子里面虽然都有 桌子椅子,但是他们都是独立的。 新建目录,cloudfunctions ,是云函数的保存目录。在项目根目录找到...
手写 Attention 注意力机制 及理解
背景问题RNN 和 各种变体 RNN 中 LSTM/GRU 都存在一个问题,就是如何解决 长距离信息的感知。RNN 的解决办法是加大 sequence,更长的窗口记得更加久远的信息;LSTM 和 GRU 就是把记忆设置成不同的权重,对重要的信息加大权重。Attention 又是另外一个角度,去解决这个问题。 Attention 是什么Attention 中文是注意力机制,是对某个事物的某部分的关注点。 从人脑的角度想,时间和资源都是有限的,所以只能在一定的限度内去关注某些部分。比如看到一群人的照片,我们自然去找美女;看一个美女的照片,我们自然去看美女的眼睛。我们为什么会不自主的去看这些部分而不是看全景呢?因为我们的注意力资源是有限的,我们只对关注点高的部分感兴趣。这是属于在我们人脑里面的注意力机制。从模型的角度想,用数学将他们建模,他们应该是注意力得分最高的部分,也就是模型可以重点关注的地方。 总结,上述就是 Attention Score 的基本的理解。谁得分高,谁就可以得到更加多的关注。 下面把 Attention Score...
seq2seq 手工实现及原理分析
背景问题现实中,有一类问题是 输入输出不定长 的,比如 翻译,从中文到英文 文生图,一段话生成一个图片 摘要,总结一段话的信息 所以 seq2seq 就是为了解决这种 一串序列 生成 另外一串序列 问题的模型。 原理seq2seq,sequence to sequence,也有另外一种叫法 encoder and decoder。他是一种上层模型架构,即是组合模型,他可以由不同的底层模型来实现。 我们可以先看原理图。原理图从原理图中可以知道,seq2seq 模型 有以下的特征: 模型都会有一个 Encoder ,一个 Decoder,和一个 Context Encoder 就是字面意思的 – 编码器,src_input 经过Encoder 处理,输出 Context 中 同理,Decoder 就是解码器,tgt_input 和 Context 经过 Decoder 处理, 输出 tgt_output Encoder 和 Decoder 都必须能够识别 Context src: source, tgt: target 🔥 Context 的组成是非常重要的,他是...
手写 LSTM 和 GRU 且原理分析
背景问题RNN 是解决时间序列数据的模型。但是他无法解决时间步过长而无法记住长期信息的这个问题。从而诞生了很多 RNN 的变种模型来解决这些问题。我们今天来看下他们的原理和手写他们的实现。 复杂 RNN常规的 RNN 的逻辑图如下: 代码如下:$h_{t} = f(h_{t-1},x_t)$$o_t = g(h_t)$ 为了解决 传统 RNN 的问题,就有了以下的思路: 在不同的转换过程(每个连线)中增加多 一些轻量级的转换,增加记忆度 加上残差层 增加多更多的输出层,先抽取低维特征,再抽取高维特征的方法 各种的变体的 RNN 的架构图如下: 其中最优秀的两种变体模型就是 LSTM 和 GRU 的模型。下面分别对下面的模型进行介绍。 LSTMLSTM(Long Short-Term Memory)全称 长短期记忆。简单的说,就是记忆分长期和短期的。长期的记忆,可以长时间存活;同理,短期记忆生存时间就比较短。 🔥 RNN 记忆是存在每个时间步的隐状态中的,随着时间的推移,会“遗忘”时间长的隐状态,即权重逐步减少; LSTM 就是...
RNN 的基础
背景问题我们有时候需要处理一些 _时间序列数据_,比如 股票预测,天气预测,根据前面单词预测后续一个单词等场景。NN(Neural Network) 在处理这些问题,有他的局限性。RNN (Recurrent Neural Network),就是为了用于处理这些问题。 原理一句话:能够记住前 X 步,离当前时间越近的,越记得深刻,即越能影响当前步的输出。 里面有几层意思: 当前步输出,与前 X 步的记忆构成 前 X 步的输入,就构成了 前 X 步的记忆 前 X 步的记忆,X 越小,权重越大,越能影响当前步的输出 和人的记忆就很像,越近的事件,当然记得越清了,越往前倒,就记得越模糊。 简单的示意图,颜色越红,就是记得越清楚的。越往后,“what” 这个单词就已经不记得了。 💡 所以搞清清楚 记忆,输入,输出,时间步 之间的关系,是 RNN 的关键。(NN 就没有 记忆 和 时间步 的概念) 时间步,就是表示时间序列。比如 股市指标的每秒钟时刻,天气浮动的每天时刻,一句话中的每个单词的前后顺序时刻,他们都是有先后关系的。记忆,就好像 **每个时间步...
CNN 一些例子-其中包括 LeNet
背景问题前文中已经对 CNN 组件 以及整体的数据流动有了解,有需要的可以翻看之前的文章,后面我们直接应用 CNN 来解决实际问题,动手操作才是学习的根本。 本篇的所有的例子,详细的 ipynb 都可以从下面链接中找到。 NNvsCNN ipynb 链接,识别图形 ipynb 链接。 NN vs CNN本例子的目的是:同样面对 mnist 手写数字数据集的时候,对比 使用 NN 和 使用 CNN ,看一下他们表现的差异。可运行文件 ipynb 的链接。 prepare data123456789101112import torchimport torchvision# %%transformation = torchvision.transforms.ToTensor()# 执行调整文件的位置train_dataset = torchvision.datasets.MNIST(root='../data/mnist/', train=True, download=True, transform=transformation)test_dataset =...
CNN 的理解
背景问题有时候,我们会使用深度神经网络来学习数据。如果效果不理想,常常都会 加深和加宽全连接层 来让效果更加的完善。但是加深加宽网络会引来更加多的问题,比如 梯度消失/梯度爆炸 等。特别是面对图像识别问题的时候,比如手写数字识别,一幅图片本来就有大量的信息,width/height/3 color channels 等,加深加宽网络下的模型,结果往往未如理想。CNN 就是为了解决上述的问题的。CNN 即是 Convolution Neural Network,卷积神经网络。 先讲解不同的子组件,再组合起来,形成手写的模型,这样就更加容易的去理解模型。 卷积和卷积核卷积卷积,是 来源矩阵 和 卷积核矩阵 一个个对应位置进行相乘后,再相加的运算。 12345678910111213141516# 对 【中心点】进行卷积运算# 来源举证input_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])#...



