Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
liuyunshengsir
Python_690654
提交
71642c69
P
Python_690654
项目概览
liuyunshengsir
/
Python_690654
与 Fork 源项目一致
Fork自
inscode / Python
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python_690654
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
71642c69
编写于
7月 23, 2025
作者:
R
root
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Wed Jul 23 14:57:00 CST 2025 inscode
上级
fdc2558d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
89 addition
and
31 deletion
+89
-31
test02.py
test02.py
+0
-31
test02.py/test03.py
test02.py/test03.py
+89
-0
未找到文件。
test02.py
已删除
100644 → 0
浏览文件 @
fdc2558d
import
torch
# 创建一个 2x3 的全 0 张量
a
=
torch
.
zeros
(
2
,
3
)
print
(
a
)
# 创建一个 2x3 的全 1 张量
b
=
torch
.
ones
(
2
,
3
)
print
(
b
)
# 创建一个 2x3 的随机数张量
c
=
torch
.
randn
(
2
,
3
)
print
(
c
)
# 从 NumPy 数组创建张量
import
numpy
as
np
numpy_array
=
np
.
array
([[
1
,
2
],
[
3
,
4
]])
tensor_from_numpy
=
torch
.
from_numpy
(
numpy_array
)
print
(
tensor_from_numpy
)
# 在指定设备(CPU/GPU)上创建张量
device
=
torch
.
device
(
"cuda"
if
torch
.
cuda
.
is_available
()
else
"cpu"
)
d
=
torch
.
randn
(
2
,
3
,
device
=
device
)
print
(
torch
.
cuda
.
is_available
())
print
(
d
)
# 逐元素乘法(要求形状相同)
X
=
torch
.
tensor
([[
1
,
2
],
[
3
,
4
]])
Y
=
torch
.
tensor
([[
5
,
6
],
[
7
,
8
]])
Z
=
X
*
Y
# 或 torch.mul(X, Y)
print
(
"逐元素乘法结果:
\n
"
,
Z
)
\ No newline at end of file
test02.py/test03.py
0 → 100644
浏览文件 @
71642c69
import
torch
import
torch.nn
as
nn
import
torch.optim
as
optim
import
numpy
as
np
import
matplotlib.pyplot
as
plt
# 设置随机种子保证可重复性
torch
.
manual_seed
(
42
)
# ==========================
# 1. 生成正弦函数数据
# ==========================
def
generate_sine_data
(
seq_length
=
50
,
total_points
=
1000
):
x
=
np
.
linspace
(
0
,
100
,
total_points
)
y
=
np
.
sin
(
x
)
# 构造输入序列和目标值
X
,
Y
=
[],
[]
for
i
in
range
(
len
(
y
)
-
seq_length
):
X
.
append
(
y
[
i
:
i
+
seq_length
])
# 输入序列
Y
.
append
(
y
[
i
+
seq_length
])
# 下一个值(目标)
return
np
.
array
(
X
),
np
.
array
(
Y
)
seq_length
=
50
X
,
y
=
generate_sine_data
(
seq_length
=
seq_length
)
# 转换为 PyTorch 张量
X
=
torch
.
FloatTensor
(
X
).
unsqueeze
(
-
1
)
# 形状: (样本数, seq_length, 1)
y
=
torch
.
FloatTensor
(
y
).
unsqueeze
(
-
1
)
# 形状: (样本数, 1)
# ==========================
# 2. 定义 RNN 模型
# ==========================
class
SimpleRNN
(
nn
.
Module
):
def
__init__
(
self
,
input_size
=
1
,
hidden_size
=
32
,
output_size
=
1
):
super
().
__init__
()
self
.
rnn
=
nn
.
RNN
(
input_size
,
hidden_size
,
batch_first
=
True
)
self
.
fc
=
nn
.
Linear
(
hidden_size
,
output_size
)
def
forward
(
self
,
x
):
# x 形状: (batch_size, seq_length, input_size)
out
,
_
=
self
.
rnn
(
x
)
# out 形状: (batch_size, seq_length, hidden_size)
out
=
self
.
fc
(
out
[:,
-
1
,
:])
# 取最后一个时间步的输出
return
out
model
=
SimpleRNN
()
criterion
=
nn
.
MSELoss
()
optimizer
=
optim
.
Adam
(
model
.
parameters
(),
lr
=
0.01
)
# ==========================
# 3. 训练模型
# ==========================
epochs
=
200
losses
=
[]
for
epoch
in
range
(
epochs
):
optimizer
.
zero_grad
()
outputs
=
model
(
X
)
loss
=
criterion
(
outputs
,
y
)
loss
.
backward
()
optimizer
.
step
()
losses
.
append
(
loss
.
item
())
if
(
epoch
+
1
)
%
20
==
0
:
print
(
f
'Epoch [
{
epoch
+
1
}
/
{
epochs
}
], Loss:
{
loss
.
item
():.
4
f
}
'
)
# 绘制损失曲线
plt
.
figure
(
figsize
=
(
12
,
4
))
plt
.
plot
(
losses
)
plt
.
xlabel
(
'Epoch'
)
plt
.
ylabel
(
'Loss'
)
plt
.
title
(
'Training Loss'
)
plt
.
show
()
# ==========================
# 4. 预测并可视化结果
# ==========================
model
.
eval
()
with
torch
.
no_grad
():
predictions
=
model
(
X
)
# 可视化前 200 个点的预测结果
plt
.
figure
(
figsize
=
(
12
,
6
))
plt
.
plot
(
y
[:
200
].
numpy
(),
label
=
'True'
)
plt
.
plot
(
predictions
[:
200
].
numpy
(),
label
=
'Predicted'
)
plt
.
legend
()
plt
.
title
(
'RNN Sine Wave Prediction'
)
plt
.
show
()
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录