《瞒着妻子去漫展》:一场关乎爱与梦想的“秘密行动”,你敢不敢?

核心内容摘要

探索“www成人”的无限可能:一场感官的盛宴与心灵的对话
西瓜成色18K.8.35m:不止于瓜,更是一场关于“甜”的极致探索

404:当“黄台”遇见下载,一场数字时代的奇遇

dqn和cnn有什么区别Qwen3-MaxDQNDeep Q-Network深度Q网络和 CNNConvolutional Neural Network卷积神经网络是两个不同层次、不同用途的概念它们的区别主要体现在目的、结构角色和应用领域上。

下面从多个维度进行对比说明

本质定位不同表格项目DQNCNN类型强化学习算法属于策略/价值学习方法神经网络架构属于深度学习模型目标学习一个最优策略使智能体在环境中最大化累积奖励自动提取输入数据如图像中的空间层次特征用于分类、检测等任务✅ 简单说DQN 是“怎么学决策”的算法CNN 是“怎么看图像”的工具。

功能角色不同DQN 使用 CNN 作为其函数逼近器function approximator在处理高维状态如游戏画面、摄像头图像时DQN 通常会内部嵌入一个 CNN来将原始像素映射为 Q 值。

例如在 Atari 游戏中输入4帧堆叠的 84×84 灰度图像形状为 84×84×4DQN 的主干网络 CNN卷积层 池化 全连接层输出每个动作对应的 Q(s, a) 值CNN 本身不包含决策逻辑它只是一个特征提取器必须配合损失函数、优化器、标签等才能完成监督学习任务如图像分类。

类比CNN 像是一双“眼睛”负责看图DQN 像是一个“大脑经验系统”用这双眼睛来决定下一步该做什么动作。

核心组件对比表格组件DQN 特有CNN 特有经验回放Experience Replay✅ 存储 (s, a, r, s) 并随机采样训练❌ 不涉及目标网络Target Network✅ 用 θ⁻ 网络提供稳定目标值❌ 不涉及ε-贪婪策略✅ 平衡探索与利用❌ 不涉及卷积层 / 池化层可选仅当输入是图像时使用✅ 核心结构全连接层通常用于输出 Q 值通常用于最终分类 注意DQN不一定非要用 CNN。

如果状态是低维向量如机器人关节角度DQN 可以只用全连接网络MLP。

而 CNN几乎从不单独用于强化学习决策它需要被集成到像 DQN 这样的框架中。

应用场景差异表格场景DQNCNNAtari 游戏 AI✅ 主流方法之一✅ 作为视觉编码器图像分类如猫狗识别❌ 不适用✅ 标准工具机器人路径规划✅ 可用于离散动作空间❌ 仅处理感知输入医疗影像诊断❌ 不直接适用✅ 广泛使用

5.

总结一句话CNN 是一种“感知模型”DQN 是一种“决策算法”DQN 可以并且经常使用 CNN 作为其感知模块但两者不是同一类事物。

附典型 DQN 架构示例Atari 游戏text编辑输入4帧 84×84 灰度图 → [84×84×4] ↓ 卷积层18×8, stride4, 32 filters → ReLU ↓ 卷积层24×4, stride2, 64 filters → ReLU ↓ 卷积层33×3, stride1, 64 filters → ReLU ↓ 展平 → 全连接层512单元 → ReLU ↓ 全连接输出层动作数个神经元→ Q(s, a₁), Q(s, a₂), ...这个网络整体是DQN 的 Q 网络而前几层就是CNN。

如需进一步了解 DQN 如何结合 CNN或想看代码实现也可以继续问我dqn怎么保存训练经验到本地Qwen3-Max在 DQNDeep Q-Network训练过程中保存训练经验即经验回放池中的数据到本地是一个常见需求主要用于断点续训恢复训练时重用历史经验离线分析研究智能体行为模式共享数据集供他人复现实验DQN 的“训练经验”通常指存储在经验回放缓冲区Replay Buffer中的四元组(st,at,rt,st1,donet)(st​,at​,rt​,st1​,donet​)

核心思路要将经验保存到本地需完成以下步骤定义可序列化的经验回放结构在训练中积累经验使用pickle、torch.save或numpy.save等工具保存缓冲区内容加载时重建缓冲区并恢复数据⚠️ 注意经验回放池本身如collections.deque可能包含不可直接序列化的对象如 NumPy 数组、Tensor需转换为兼容格式。

具体实现方法以 PyTorch 为例方法 1使用torch.save保存整个 ReplayBuffer推荐假设你使用的是类似 中定义的ReplayBuffer类python编辑import torch import collections import random import numpy as np class ReplayBuffer: def __init__(self, capacity): self.buffer collections.deque(maxlencapacity) def add(self, state, action, reward, next_state, done): self.buffer.append((state, action, reward, next_state, done)) def sample(self, batch_size): transitions random.sample(self.buffer, batch_size) return zip(*transitions) def size(self): return len(self.buffer) # 新增获取所有经验用于保存 def get_all_transitions(self): return list(self.buffer)保存经验到本地python编辑# 假设 buffer 是已填充的 ReplayBuffer 实例 transitions buffer.get_all_transitions() # 转换为 NumPy 数组确保可序列化 states, actions, rewards, next_states, dones zip(*transitions) save_dict { states: np.array(states), actions: np.array(actions), rewards: np.array(rewards), next_states: np.array(next_states), dones: np.array(dones) } # 保存到文件.pt 或 .pth torch.save(save_dict, dqn_replay_buffer.pt) print(fSaved {len(transitions)} experiences to dqn_replay_buffer.pt)从本地加载经验python编辑# 加载 loaded torch.load(dqn_replay_buffer.pt) # 重建 ReplayBuffer buffer ReplayBuffer(capacity

for i in range(len(loaded[states])): buffer.add( loaded[states][i], loaded[actions][i], loaded[rewards][i], loaded[next_states][i], loaded[dones][i] ) print(fLoaded {buffer.size()} experiences from file.)✅ 优点简单、兼容 PyTorch 生态支持 Tensor/NumPy 混合数据。

安全提示若使用torch.load建议设置weights_onlyTrue防止恶意代码执行PyTorch

0。

方法 2使用pickle适用于纯 Python 对象如果经验全是 Python 原生类型或 NumPy 数组python编辑import pickle # 保存 with open(replay_buffer.pkl, wb) as f: pickle.dump(list(buffer.buffer), f) # 加载 with open(replay_buffer.pkl, rb) as f: data pickle.load(f) buffer ReplayBuffer(capacity

for exp in data: buffer.add(*exp)⚠️ 风险pickle不安全不建议加载不可信来源的数据。

方法 3保存为 CSV 或 HDF5适合分析若需用 Pandas 分析可转为 DataFrame 并保存python编辑import pandas as pd df pd.DataFrame({ state: [s.tolist() for s, _, _, _, _ in buffer.buffer], action: [a for _, a, _, _, _ in buffer.buffer], reward: [r for _, _, r, _, _ in buffer.buffer], next_state: [ns.tolist() for _, _, _, ns, _ in buffer.buffer], done: [d for _, _, _, _, d in buffer.buffer] }) df.to_hdf(replay.h5, keyexperiences, modew) # 或 df.to_csv(replay.csv) 优势便于用 Jupyter Notebook 可视化分析经验分布 。

高级场景与模型一起保存完整检查点在实际项目中常将模型 优化器 经验回放一起保存以便完全恢复训练状态python编辑checkpoint { model_state_dict: q_net.state_dict(), target_net_state_dict: target_net.state_dict(), optimizer_state_dict: optimizer.state_dict(), replay_buffer: list(buffer.buffer), # 或 save_dict 如上 episode: episode, epsilon: epsilon } torch.save(checkpoint, dqn_checkpoint.tar) # .tar 是通用检查点惯例加载时python编辑ckpt torch.load(dqn_checkpoint.tar, weights_onlyTrue) q_net.load_state_dict(ckpt[model_state_dict]) buffer ReplayBuffer(capacity

for exp in ckpt[replay_buffer]: buffer.add(*exp)

四、

注意事项内存限制经验回放池可能很大如 1M 条经验 × 每条 1KB ≈ 1GB保存前确认磁盘空间。

数据类型一致性确保state等字段是 NumPy 或 Tensor避免混合类型导致加载失败。

环境依赖若state包含自定义类对象需实现__getstate__/__setstate__。

压缩选项torch.save支持pickle_protocol4和zipfile压缩可减小文件体积。

总结表格方法适用场景工具torch.save 字典推荐与 DQN 训练代码无缝集成PyTorchpickle快速原型小规模数据Python 标准库HDF5/CSV数据分析、可视化pandas, h5py通过上述方法你可以灵活地将 DQN 的训练经验持久化到本地实现高效复用与协作。

九一社1-36集新加坡电视剧播放-九一社1-36集新加坡电视剧播放应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123