python D3

一列表与元组
总体:承装单独数据的容器类型的数据
1.列表
定义[元素1,2,3,n]
注意 :之间的逗号分隔元素
可创建普通列表,空列表,混合列表
与元组区别(可更改因此附加插入删除都可用)
具体操作:
1) 向列表添加元素
append(obj)[只接受一个参数]

bbba=[a,b,c,d]
a.append(e)
print(bbba)
#[a,b,c,d,e]

extend(seq)[追加另一个序列的多个值]
区别:append 追加
extend 扩展
insert(index,obj)[在编号index插入obj]
!从0开始
2)从列表中获取元素
remove(obj)移除第一个匹配项
pop([index=-1] 移除一个元素(默认最后一个元素并返回该元素值)

abbbb=[a,b,c,d]
e=a.pop(-1)
print(e)
#e=d

区别(remove具体 pop指定编号)
del var1,2,3【删除多个对象】
二列表分片
写法;start:stop:step
1:start
默认step为1 从编号往尾部切
2stop:(不包括尾)
默认step为头部往序号切片
3;start:stop
!留头不要尾
4:start:step:stop
三:拷贝

list1=[a,b,c]
list2=list1
list3=list1[:]

操作方法!!!!!
列表常用操作符
比较,逻辑,连接,重复,成员关系操作符(与元组相同的是*,+)
+首尾*复制拼接
其他方法
count(obj):出现次数
index(obj[]):找出指定位置的某个值的第一个匹配位置的编号
reverse();反向元素
sort()

list1=[124,345,546,456]
list1.sort()
print(list1)
#[123,345,456,567]

(false降序,true(默认)升序)
2元组
定义(1,2,3,n)!不可修改
访问按序号类似列表!若括号只有一个元素后面加逗号与运算顺序区分
二维元组也可以
更新删除元组
由于元组有不可更改性质,不能给元组元素赋值,但是可以更改元素,与赋值不同!!!
相关操作符
内置方法cout
index
解压元组(有几个元素左边定义几个变量)
二维(按结构定义)
只要几个

t=(1,2,3,4)
(a,b,*rest,c)=t
print(a,b,c)
#1 2 4
print(rest)
# [3,4]

若不关心rest 可直接用-代替rest

### Python 实现 D3QN 的教程与代码实例 #### 背景介绍 深度双Q网络(Dueling Double Q-Networks, D3QN) 是一种改进型的强化学习算法,它结合了双重Q学习(Double Q-Learning) 和决斗架构(Dueling Architecture),旨在解决传统DQN存在的高估动作价值的问题并提高模型收敛速度和稳定性[^1]。 #### 主要组成部分 - **经验回放(Experience Replay)**:通过存储代理(agent)经历过的状态转移四元组(state-action-reward-next state),使得训练数据更加独立同分布。 - **固定目标Q网络(Fixed Target Q-Network)**:每隔一定时间步更新一次的目标网络参数来稳定训练过程。 - **双重Q学习(Double Q-learning)**:利用两个不同的评估器分别估计当前策略下的最大期望收益以及对应的动作索引,从而减少过高的估值偏差。 - **决斗结构(Dueling Network architecture)**:将全连接层分为两支流——一支用于预测优势函数A(s,a),另一支用来计算V(s),最终组合成完整的Q值表示形式。 #### 安装依赖库 为了构建D3QN模型,通常会用到如下几个Python包: ```bash pip install gym tensorflow numpy matplotlib opencv-python ``` 这些工具提供了环境模拟、张量运算支持以及其他辅助功能。 #### 创建D3QN类定义 下面是一个简化版本的`D3QNAgent` 类框架,包含了初始化方法和其他核心组件: ```python import random from collections import deque import numpy as np import tensorflow.keras as keras class D3QNAgent: def __init__(self, state_size, action_size): self.state_size = state_size self.action_size = action_size # 参数设置 self.memory = deque(maxlen=2000) self.gamma = 0.95 # 折扣率 self.epsilon = 1.0 # 探索概率 self.epsilon_min = 0.01 self.epsilon_decay = 0.995 self.learning_rate = 0.001 self.tau = .125 # 更新频率因子 # 构建评价网络和目标网络 self.model = self._build_model() self.target_model = self._build_model() # 初始化目标网络权重等于评价网络 self.update_target_weights() def _build_model(self): """创建一个简单的神经网络""" model = keras.Sequential([ keras.layers.Dense(24, input_dim=self.state_size, activation='relu'), keras.layers.Dense(24, activation='relu'), keras.layers.Dense(self.action_size, activation='linear') ]) optimizer = keras.optimizers.Adam(lr=self.learning_rate) model.compile(loss="mse", optimizer=optimizer) return model ... # 更多的方法省略未展示 ``` 此部分仅展示了如何搭建基本的Keras序列化模型作为决策机制的核心。实际应用中还需要补充记忆管理(`remember`)、批量采样(`replay`)等功能模块才能构成完整的解决方案。 #### 训练循环逻辑 在完成上述准备工作之后,可以按照以下伪代码来进行一轮又一轮的学习迭代直到满足特定条件为止: ```python for episode in range(num_episodes): state = env.reset() # 获取初始观察值 done = False # 是否结束标志位设为False while not done: action = agent.act(state) # 根据现有政策采取行动 next_state, reward, done, info = env.step(action) # 执行选定操作获得反馈信息 agent.remember(state, action, reward, next_state, done) # 存储交互记录至缓冲区 state = next_state # 进入下一个时刻的状态空间 if len(agent.memory)>batch_size:# 当积累足够样本后启动学习模式 agent.replay(batch_size) # 使用随机抽取的小批次进行反向传播调整权值 ... ``` 以上就是关于基于Python实现D3QN的一个概览性描述及其关键要素说明。对于更深入的理解和技术细节探讨,则建议查阅相关文献资料或官方文档获取最新进展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值