![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
安達と島村
学习记录用,可能有错误的地方
展开
-
leetcode128.Binary Tree Maximum Path Sum
计算某个node后,要继续计算其父节点,此时dfs需要返回node.val+max(lv,rv),否则在path里该node两个子节点均被占用,不能再加其父节点。当遍历到整个数的最大path的根节点时,最大值会被保存在max1.原创 2023-01-27 12:13:58 · 111 阅读 · 0 评论 -
免费网盘opendrive的request upload api
网盘地址https://www.opendrive.com/,有7g空间和1天1g带宽。选这个网盘原因是通过可以python或者shell进行自动化上传和查询。上传的文件不大情况下容量和带宽小的可接受。根据需求只写了upload方法。原创 2022-10-26 19:41:14 · 581 阅读 · 0 评论 -
django re_path 配置正则表单式path
【代码】django re_path 配置正则表单式path。原创 2022-08-23 22:17:56 · 366 阅读 · 0 评论 -
django ajax jquery csrf_exempt 设置favicon.ico
响应ajax请求的views方法需要加上@csrf_exempt注解,否则post请求报错,get可以。原创 2022-08-23 21:24:13 · 447 阅读 · 0 评论 -
django开发简易流程
【代码】django开发简易流程。原创 2022-08-22 21:55:43 · 268 阅读 · 0 评论 -
django session操作 middlewaremixin拦截器
登录后,在template里{{request.session.user}}可以查看request.session.get(‘user’)原创 2022-08-22 21:30:03 · 380 阅读 · 0 评论 -
django ModelForm增删改查 下拉列表 表单校验 上传显示图片 钩子clean 中文报错
【代码】django ModelForm增删改查 下拉列表 表单校验 上传显示图片 钩子clean 中文报错。原创 2022-08-21 22:19:02 · 471 阅读 · 0 评论 -
Django extends 引用其他页面
参考https://www.w3schools.com/django/django_tags_extends.php。访问后test_extends.html,页面原代码如下。原创 2022-08-21 19:53:18 · 107 阅读 · 0 评论 -
django forms.form 增删改查 表单校验 上传图片和显示图片 全局钩子clean
filefield部分参考https://www.liujiangblog.com/course/django/141。原创 2022-08-21 18:41:05 · 281 阅读 · 0 评论 -
django上传和展示图片 re_path
配置上传图片的保存路径MEDIA_URL。设置保存路径MEDIA_URL可访问。原创 2022-08-21 13:43:21 · 534 阅读 · 0 评论 -
django增删改查
【代码】django增删改查。原创 2022-08-21 13:36:02 · 68 阅读 · 0 评论 -
python import自己写的本地模块报错No module named 获取当前(的上(上)级)目录
此时个文件的import均正常。原创 2022-08-20 17:33:14 · 764 阅读 · 0 评论 -
django连接pgsql migrate makemigrations
参考。原创 2022-08-20 17:01:50 · 492 阅读 · 0 评论 -
django重定向redirect csrf_token request的属性
【代码】django重定向redirect csrf_token request的属性。原创 2022-08-20 14:23:35 · 187 阅读 · 0 评论 -
django项目创建和启动,静态资源配置 django模板遍历数组和对象 if forloop
工程目录下,cmd:django-admin startproject 工程名(djdemo1),创建django工程。创建模块后(假设模块名app1),在/djdemo1\settings.py的INSTALLED_APPS加上’app1’,在view里返回的html文件顶部加上{% load static %}(否则报错{% load static %}),cmd:django-admin startapp(app1) 模块名,创建新的子模块app1。在子模块下创建static/css/a.js,原创 2022-08-20 12:48:35 · 359 阅读 · 0 评论 -
vscode配置python环境和django debug
具体过程记不清楚了,随便写下。参考https://qiita.com/ryt-t5/items/4f15c5b069ad3e6910e8。原创 2022-08-20 12:26:58 · 360 阅读 · 0 评论 -
python对后台窗口截图和鼠标键盘输入
import win32api, win32con, time, cv2,win32gui,os,sys,numpy as np,win32uifrom PIL import Image, ImageGrabBASE_DIR=os.path.dirname(os.path.abspath(__file__))sys.path.append(BASE_DIR)import lunia.pictool as lp, lunia.constant as lc,lunia.luniatool as lt,原创 2021-09-16 23:35:50 · 5747 阅读 · 7 评论 -
threading.Event的demo
参考https://blog.csdn.net/u012067766/article/details/79734630import threadingfrom time import sleept=2def test(n, event): while not event.isSet(): print('Thread %s is ready' % n) sleep(1) while event.isSet(): print('Thre原创 2021-09-14 17:40:19 · 76 阅读 · 0 评论 -
td3玩Pendulum(连续动作)
参考https://blog.csdn.net/november_chopin/article/details/108171234和https://zhuanlan.zhihu.com/p/111334500ddpg的升级版,升级的地方如下:双 Critic 网络延迟 Actor 网络更新目标策略的平滑正则化 Target Policy SmoothingRegularizationimport tensorflow as tffrom tensorflow import kerasim原创 2021-09-14 14:44:36 · 392 阅读 · 0 评论 -
ppo玩Pendulum(连续动作)
import tensorflow as tffrom tensorflow import kerasfrom keras.layers import *import numpy as npimport gymnp.random.seed(1)tf.random.set_seed(1)EP_MAX = 500BATCH = 32EP_LEN = 200GAMMA = 0.9A_LR = 0.0001C_LR = 0.0002A_UPDATE_STEPS = 10C_UPDA原创 2021-09-13 17:43:18 · 1683 阅读 · 0 评论 -
dppo玩cartpole(离散动作)
https://github.com/hitgub123/rl参考git,多线程的代码基本没看明白。import tensorflow as tffrom tensorflow import kerasfrom keras.layers import *import numpy as npimport gym, threading, queuenp.random.seed(1)tf.random.set_seed(1)EP_MAX = 1000EP_LEN = 500N_WORKE原创 2021-09-12 19:19:24 · 411 阅读 · 0 评论 -
ppo玩cartpole(离散动作)
https://github.com/hitgub123/rlimport tensorflow as tffrom tensorflow import kerasfrom keras.layers import *import numpy as npimport gymnp.random.seed(1)tf.random.set_seed(1)EP_MAX = 1000EP_LEN = 500GAMMA = 0.9 # reward discount factorA_LR =原创 2021-09-12 19:16:29 · 2986 阅读 · 6 评论 -
keras fit的sample_weight
sample_weight对每一个sample的梯度,乘以对应的weightimport tensorflow as tffrom tensorflow import kerasfrom keras.layers import *import numpy as nptf.random.set_seed(1)np.random.seed(1)x_input = Input(shape=(None, 1))y_input = Input(shape=(None, 1))ki = kera原创 2021-09-08 13:56:50 · 1123 阅读 · 0 评论 -
反向传播的只有一个参数的demo
矩阵求导不会算import tensorflow as tfimport numpy as npfrom tensorflow import kerasfrom keras.layers import *tf.random.set_seed(1)np.random.seed(1)x=Input((1,))out=Dense(1)(x)out=Dense(1)(out)m=keras.models.Model(x,out)opt = tf.compat.v1.train.Gradie原创 2021-09-02 21:30:19 · 57 阅读 · 0 评论 -
梯度下降demo
loss对参数(权重)求偏导,再用偏导*学习率更新参数import tensorflow.compat.v1 as tfimport tensorflow as tf2tf.disable_v2_behavior()import numpy as npfrom tensorflow import kerastf2.random.set_seed(1)sess = tf.Session()np.random.seed(1)x_input = tf.placeholder(tf.floa原创 2021-09-02 10:36:02 · 98 阅读 · 0 评论 -
a3c玩cartpole
import multiprocessingimport threadingimport tensorflow as tffrom tensorflow import kerasfrom keras.layers import *import numpy as npimport gymnp.random.seed(1)tf.random.set_seed(1)GAME = 'CartPole-v0'N_WORKERS = multiprocessing.cpu_count()MAX原创 2021-08-29 23:03:43 · 177 阅读 · 0 评论 -
keras使用apply_gradients进行训练
不需要session,和tf1一样使用apply_gradients进行训练。在for循环里训练,预测结果和这篇的两个for的结果一样。直接train(x_train,y_train)训练,结果和其他所有结果不一样。import tensorflow as tffrom tensorflow import kerasfrom keras.layers import *import numpy as nptf.random.set_seed(1)np.random.seed(1)x_inp原创 2021-08-29 13:24:01 · 1185 阅读 · 0 评论 -
关于tf.stop_gradient的使用及理解
参考https://www.jianshu.com/p/f893cb703b6b和关于tf.stop_gradient的使用及理解通过self.q_target = tf.stop_gradient(q_target),将原本为TensorFlow计算图中的一个op(节点)转为一个常量self.q_target,这时候对于loss的求导反传就不会传到target net去了。import tensorflow.compat.v1 as tfimport tensorflow as tf2tf.di原创 2021-08-28 15:34:51 · 1470 阅读 · 1 评论 -
tf.gradients()和grad_ys的作用
完全参考这篇import tensorflow.compat.v1 as tfimport tensorflow as tf2tf.disable_v2_behavior()import numpy as nptf2.random.set_seed(1)np.random.seed(1)w1 = tf.get_variable('w1', shape=[2])w2 = tf.get_variable('w2', shape=[2])w3 = tf.get_variable('w3'转载 2021-08-27 23:03:21 · 370 阅读 · 0 评论 -
tf1替换minimize的2种写法以及发现与keras训练结果有差异
不熟悉tf1,记录一下import tensorflow.compat.v1 as tfimport tensorflow as tf2tf.disable_v2_behavior()import numpy as nptf2.random.set_seed(1)sess = tf.Session()np.random.seed(1)x_input = tf.placeholder(tf.float32, name='x_input')y_input = tf.placeholder原创 2021-08-27 13:28:04 · 274 阅读 · 0 评论 -
DDPG玩Pendulum-v0
参考莫烦和Keras深度强化学习–DPG与DDPG实现,代码critic的输出越大,说明actor选择的行为越好,所以可以把critic的输出的负值当loss。actor有两个网络,ae接受当前状态s,计算当前行为a,并执行a,at接受下个状态s_,计算下个行为a_,传给ct,通过最大化q(最小化-q)更新aecritic有两个网络,ce接受当前状态s和当前行为a,计算当前价值q,ct接受下个状态s_和下个行为a_,计算下个价值q_,使用 v_*gama+r 和 v 更新ceimport原创 2021-08-24 20:51:41 · 749 阅读 · 0 评论 -
actor critic玩cartpole
只能玩到reward=200多,gitimport gym, numpy as npimport tensorflow as tffrom tensorflow import kerasnp.random.seed(1)tf.random.set_seed(1)class Actor: def __init__(self,n_actions,n_features,learning_rate=1e-3): self.n_actions = n_actions原创 2021-08-22 17:14:49 · 347 阅读 · 0 评论 -
policy gradient玩cartpole(2)
能对多个模型输入使用2种loss。gitimport gym,numpy as npimport tensorflow as tf,timefrom tensorflow.keras import *np.random.seed(1)tf.random.set_seed(1)#def my_loss(y_true, y_pred): neg_log_prob=losses.categorical_crossentropy(y_true,y_pred) # y_true已经原创 2021-08-21 21:26:47 · 139 阅读 · 0 评论 -
policy gradient玩cartpole(1)
代码地址git能对多个模型输入使用3种loss,但每次都要传多个参数(没用的可以dummy)。达到一定reward后会不停的失败,需要提前结束。import gym, numpy as npimport tensorflow as tffrom tensorflow import kerasnp.random.seed(1)tf.random.set_seed(1)'''policy_gradient_cartpole_v1:能对多个模型输入使用3种loss,但每次都要传多个参数(没用原创 2021-08-21 21:25:01 · 178 阅读 · 0 评论 -
policy gradient flappy bird(不收敛)
from tensorflow import kerasimport numpy as np, cv2, sys, tensorflow as tfsys.path.append("game/")import dqn_flappy_bird.game.wrapped_flappy_bird as gameimport warningswarnings.filterwarnings('ignore')# train_on_batch + tensorboard 用def named_l原创 2021-08-15 18:02:08 · 288 阅读 · 0 评论 -
Prioritized_Replay_dqn玩flappybird
上一篇的权重有问题,这里用add_loss和自定义loss解决了。但模型不收敛,暂时解决不了,先留个记录。git见上篇from tensorflow import kerasimport numpy as np, time, cv2, sys, tensorflow as tf, mathsys.path.append("game/")import dqn_flappy_bird.game.wrapped_flappy_bird as game# train_on_batch + tens原创 2021-08-13 17:41:45 · 156 阅读 · 0 评论 -
关于tf.reduce_mean的参数keep_dims
import tensorflow as timport numpy as na=n.array([[1,2],[3,4]])'''array([[1, 2], [3, 4]])'''t.reduce_mean(a,axis=1)'''<tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 3])>'''a=n.array([[1.,2.],[3.,4.]])'''array([[1., 2.],原创 2021-08-11 13:51:32 · 408 阅读 · 0 评论 -
Dueling_DQN玩flappybird(使用Model+各种运算构建网络)
11原创 2021-08-11 13:29:36 · 158 阅读 · 0 评论 -
Prioritized_Replay_dqn玩flappybird(有bug)
参考git和让dqn变得更会学习。代码基于dqn玩flappybird做了如下修改:使用两个网络(eval和target,非ddqn)删除了success和fail的memory使用SumTree进行重要性的相关操作重要性体现在两个地方,更重要的记忆更可能被选中,且更新的幅度更大。莫凡的代码里loss=tf.reduce_mean(self.ISWeights * tf.squared_difference(self.q_target, self.q_eval)),貌似没有现成的loss函数原创 2021-08-10 23:35:16 · 239 阅读 · 0 评论 -
ddqn玩flappybird
import win32api, win32con, time, cv2, threading, lunia.log as llimport lunia.pictool as lp, lunia.constant as lcPICDIR = lc.PICDIRZJD = cv2.imread(PICDIR + lc.ZJDPATH, 1)ZJDSHOP = cv2.imread(PICDIR + lc.ZJDSHOPPATH, 1)BAGS = cv2.imread(PICDIR + lc.原创 2021-08-09 12:51:04 · 224 阅读 · 0 评论