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

相关推荐
EterNity_TiMe_17 分钟前
【人工智能】蓝耘智算平台盛大发布DeepSeek满血版:开创AI推理体验新纪元
人工智能·python·机器学习·deepseek
顾德拉科42 分钟前
使用pyinstaller对gradio和chromadb进行打包
python
java1234_小锋1 小时前
一周学会Flask3 Python Web开发-redirect重定向
前端·python·flask·flask3
重生之我要成为代码大佬1 小时前
Python天梯赛10分题-念数字、求整数段和、比较大小、计算阶乘和
开发语言·数据结构·python·算法
Daitu_Adam1 小时前
Windows11安装GPU版本Pytorch2.6教程
人工智能·pytorch·python·深度学习
阿正的梦工坊1 小时前
Grouped-Query Attention(GQA)详解: Pytorch实现
人工智能·pytorch·python
码界筑梦坊2 小时前
基于Flask的短视频流量数据可视化系统的设计与实现
大数据·python·信息可视化·flask·毕业设计
eso19832 小时前
Spark MLlib使用流程简介
python·算法·spark-ml·推荐算法
dme.3 小时前
Python爬虫基础文件操作
爬虫·python
小白教程3 小时前
Python连接MySQL数据库图文教程,Python连接数据库MySQL入门教程
数据库·python·mysql·python链接数据库·python链接mysql