conhost 最近的时间轴更新
conhost

conhost

V2EX 第 535847 号会员,加入于 2021-03-03 22:29:48 +08:00
今日活跃度排名 4932
根据 conhost 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
conhost 最近回复了
5 天前
回复了 zxCoder 创建的主题 分享发现 感觉科研水论文就像鬼畜视频创作一样
恭喜你发现了科研界的流量密码
春困秋乏夏打盹,睡不醒的冬三月
@Richard14 改变的-1 维度是因为 lstm 是针对词进行处理的。至于三维向量的理解,你可以理解为第一位是是有多少条句子,然后每一条句子中有 20 个词,每个词的维度是 8 。
@conhost 如果你不理解长度的话,你可以使用 nn.LSTMCell(8,64),然后自己定义循环生成,结果也是一样的。
@Richard14 我不太理解的是你为什么会将 2 ,3 两个维度互换呢,20 是序列长度,也就是说一个序列单元要走 20 步到达结尾,如果你设置的 bacth_first=False 的话,你需要将 1 ,2 两个维度互换。总得来说,LSTM 是对每一个词进行处理。nn.LSTM(20,64)的意思是输入到 LSTM 的维度是 20 ,LSTM 的输出维度为 64 ,这里你设置应该是不对的。要么你把[32, 20, 8]经过一个线形变换,转换成[32, 20, 20],要么你设置 nn.LSTM(8 ,64)。
@Richard14 总体来说循环网络的结构确实比较抽象,在实际理解的时候内部递归结构需要展开来看,不能将其单单就理解为一个层。包括训练时候的梯度回传,也要按照 rnn 的时间步进行展开回传的。而 cnn 由于其参数共享的原因,各个窗口之间是完全并行的,因此你理解一个窗口的操作,就可以直接扩展到其他窗口。
具体需要看你做什么了,lstm 后面加一个 dense 已经是一个完整的网络结构了。其递归的结构可以提取到全部的输入信息。在文本方面的话,cnn 确实需要堆叠多层,这是因为 cnn 是提取的局部信息,想要获取到全部信息,只能通过堆叠间接扩大卷积核的大小,从而能覆盖到全部输入。
@Richard14 RNN ,CNN 等基础模型 torch 都使用 C++在内部实现了,不过你也可以使用 pytorch 自己按照公式实现,实现方式类似于你自己定义一个 nn.Module 。实际生产中要看具体任务是什么样的,根据资源跟延时的限制决定一层还是多层。Transformer 出来之后基本上 RNN 很少单独使用了,有一些做序列标注的会在 BERT 上面加一层 biRNN ,用来提取文本的前后依赖信息。目前一般来说,RNN 在 Transformer 上的使用都是来补充位置向量太弱的问题的。不过,在小样本上,RNN 的效果会好于 Transformer ,所以具体用什么还是要看使用场景。
torch vision 里面是设置好的模型,打印的是模型的结构,并不是具体到某一层是怎么搭建的。而 LSTM 是一个层,作用类似于 ResNet 中的 Conv2d 。而 ResNet 是一个网络,由多个层构成。现在你打印的是 LSTM 里面的参数名和参数的维度,不是模型结构。如果你是做 NLP 的话,可以使用 hugging face 的 transformers 库,里面是近几年 NLP 上预训练模型。
@missqso #2 破坏计算机信息系统罪了解一下。既然客户都不懂 IT 技术了,那就在代码里面加在线验证或者 license 的方式解决呗。不付款的话取消接入验证或者吊销 license
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3562 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 05:32 · PVG 13:32 · LAX 22:32 · JFK 01:32
Developed with CodeLauncher
♥ Do have faith in what you're doing.