sac网络搭建(遇到的各种坑)

1.actor网络居然是两个分支????

答:

以下面代码为例,与ddpg的actor网络不同,该网络有两个返回值,两个返回值通常用于构建一个正太分布,从而生成动作。

复制代码
class Actor(nn.Module):
    def __init__(self, state_dim, min_log_std=-20, max_log_std=2):
        super(Actor, self).__init__()
        self.fc1 = nn.Linear(state_dim, 256)
        self.fc2 = nn.Linear(256, 256)
        self.mu_head = nn.Linear(256, 1)
        self.log_std_head = nn.Linear(256, 1)
        self.min_log_std = min_log_std
        self.max_log_std = max_log_std

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        mu = self.mu_head(x)
        log_std_head = F.relu(self.log_std_head(x))
        log_std_head = torch.clamp(log_std_head, self.min_log_std, self.max_log_std)
        return mu, log_std_head

2.actor网络需要return两个数值:mean和std

答:

使用两个返回值得到具体的动作

复制代码
import torch
import torch.distributions as D

# 假设 x 是状态输入
mu, log_std = actor(x)  # actor 是你的 Actor 实例

# 计算标准差
std = torch.exp(log_std)

# 创建正态分布
dist = D.Normal(mu, std)

3.critc与actor网络之间的对应关系

答:在第一次调试sac代码过程中出现tensor.shape不对应的问题

相关推荐
小咕聊编程4 分钟前
【含文档+PPT+源码】基于大数据的交通流量预测系统
大数据·python·django
mqiqe11 分钟前
java 加入本地lib jar处理方案
java·python·jar
意.远21 分钟前
PyTorch线性代数操作详解:点积、矩阵乘法、范数与轴求和
人工智能·pytorch·python·深度学习·线性代数·矩阵
带娃的IT创业者25 分钟前
《Python实战进阶》No45:性能分析工具 cProfile 与 line_profiler
开发语言·python
专注于大数据技术栈1 小时前
pyspark将hive数据写入Excel文件中
hive·hadoop·python·excel
纪元A梦1 小时前
华为OD机试真题——斗地主之顺子(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od
钢铁男儿1 小时前
Python 使用一等函数实现设计模式(案例分析:重构“策略”模式)
python·设计模式·重构
川石课堂软件测试2 小时前
涨薪技术|0到1学会性能测试第44课-apachetop模块监控
服务器·数据库·python·功能测试·性能优化·单元测试
cjay_fighting2 小时前
机器学习,深度学习
python·神经网络·机器学习·transformer·tensorflow2
Amctwd2 小时前
【排序算法】八大经典排序算法详解
python·算法·排序算法