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不对应的问题

相关推荐
小杨40415 分钟前
python入门系列十五(asyncio)
人工智能·python·pycharm
爱学习的capoo17 分钟前
对应列表数据的分割和分组
python·pandas
点燃大海25 分钟前
MySQL表结构导出(Excel)
java·数据库·python·mysql·spring
Hole_up33 分钟前
蓝桥杯真题-分糖果-题解
python·算法·职场和发展·蓝桥杯
databook35 分钟前
『Plotly实战指南』--散点图绘制进阶篇
python·数据分析·数据可视化
搞程序的心海1 小时前
神经网络入门:生动解读机器学习的“神经元”
人工智能·神经网络·机器学习
AI浩1 小时前
OverLoCK:一种采用“先总体把握再初步审视继而深入观察”架构的卷积神经网络(ConvNet),融合了上下文信息的动态卷积核
人工智能·神经网络·cnn
Tttian6221 小时前
Python办公自动化(4)对PPT&邮箱的操作
开发语言·python
pk_xz1234561 小时前
python加载训练好的模型并进行叶片实例分割预测
开发语言·python
独好紫罗兰1 小时前
洛谷题单3-P1075 [NOIP 2012 普及组] 质因数分解-python-流程图重构
开发语言·python·算法