Pytorch 对比TensorFlow 学习:Day 17-18: 循环神经网络(RNN)和LSTM

Day 17-18: 循环神经网络(RNN)和LSTM

在这两天的学习中,我专注于理解循环神经网络(RNN)和长短期记忆网络(LSTM)的基本概念,并学习了它们在处理序列数据时的应用。

1.RNN和LSTM基础:

RNN:了解了RNN是如何处理序列数据的,特别是它的循环结构可以用于处理时间序列或连续数据。

LSTM:学习了LSTM作为RNN的一种改进,它通过引入遗忘门、输入门和输出门解决了RNN的长期依赖问题。

2.实践应用:

使用这些概念来处理一个简单的序列数据任务,例如时间序列预测或文本数据处理。

构建一个包含RNN或LSTM层的神经网络模型。

3.PyTorch和TensorFlow实现:

在PyTorch中,使用nn.RNN或nn.LSTM来实现这些网络。

在TensorFlow中,使用Keras的SimpleRNN或LSTM层。

PyTorch代码示例:

import torch

import torch.nn as nn

import torch.optim as optim

class SimpleLSTM(nn.Module):#定义一个简单的LSTM模型

def init (self, input_size, hidden_size, num_classes):

super(SimpleLSTM, self).init ()

self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)

self.fc = nn.Linear(hidden_size, num_classes)

def forward(self, x):

初始隐藏状态和细胞状态

h0 = torch.zeros(1, x.size(0), hidden_size)

c0 = torch.zeros(1, x.size(0), hidden_size)

前向传播

out, _ = self.lstm(x, (h0, c0))

out = out:, -1, :

out = self.fc(out)

return out

#实例化模型、定义损失函数和优化器

input_size = 10 # 输入数据的特征维度

hidden_size = 20 # 隐藏层特征维度

num_classes = 2 # 输出类别数

model = SimpleLSTM(input_size, hidden_size, num_classes)

criterion = nn.CrossEntropyLoss()

optimizer = optim.Adam(model.parameters(), lr=0.001)

TensorFlow代码示例

import tensorflow as tf

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import LSTM, Dense

#定义一个简单的LSTM模型

model = Sequential([

LSTM(20, input_shape=(None, 10)), # 输入序列的长度任意,特征维度为10

Dense(2, activation='softmax') # 假设是二分类问题

])

#编译模型

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics='accuracy')

#模型概要

model.summary()

相关推荐
La Pulga12 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
楚山之石13 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Peter-OK16 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道17 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
橙橙笔记18 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
Hhy_11071 天前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
山甫aa1 天前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
m0_564876841 天前
CMake学习
学习
只愿云淡风清1 天前
正则表达式学习笔记 02:基础语法
笔记·学习·正则表达式
wangqiaowq1 天前
Ontology 学习 二
学习