使用以下代码: import gym
import numpy as np
import time
"""
SARSA on policy learning python implementation.
This is a python implementation of the SARSA algorithm in the Sutton and Barto's book on
RL. It's called SARSA because - (state, action, reward, state, action). The only differ
我想使用的DeepQLearning.jl包。为了做到这一点,我们必须做一些类似的事情
using DeepQLearning
using POMDPs
using Flux
using POMDPModels
using POMDPSimulators
using POMDPPolicies
# load MDP model from POMDPModels or define your own!
mdp = SimpleGridWorld();
# Define the Q network (see Flux.jl documentation)
# the gridworld stat
我正在一个强化学习程序中工作,我使用这篇文章作为。我使用python和keras(theano)来创建神经网络,我为这个程序使用的伪代码是
Do a feedforward pass for the current state s to get predicted Q-values for all actions.
Do a feedforward pass for the next state s’ and calculate maximum overall network outputs max a’ Q(s’, a’).
Set Q-value target for action t
我知道在正常的深度强化学习(DRL)场景中,我们学习了一个深层神经网络来将当前状态映射到Q值。Q值的数目(神经网络输出的#)与可能的动作数相同,因此我们可以根据相关的Q值选择动作。
然而,在本文"基于组合动作空间的深度强化学习预测流行Reddit线程“中,作者使用状态和动作作为输入。网络只输出一个Q值(见下图)。s_t是time的状态,t和a_t^i是time t的i^{\text{th}}操作(您可以忽略这一点,但每个操作都是向量c_t^1到c_t^3的组合)。Q_t只是Q at time t for action i。我想知道为什么只学到一个Q值?如果是这样的话,我们如何确定下一步
我模拟了一个4位波纹加法器,该加法器由4个完全加法器组成.在这里,我在试着了解Cout发生了什么。Cout代表进位输出。我无法解释E和F是如何在Cout中得到的。
我是ripple_adder.v
module full_adder( A, B, CIN, Q, COUT );
input A, B, CIN;
output Q, COUT;
assign Q = A ^ B ^ CIN;
assign COUT = (A & B) | (B & CIN) | (CIN & A);
endmodule
module adder_ripple( a, b, q );
i
我有需要相互影响的n-vectors,并输出同维d的n向量。我相信这就是torch.nn.MultiheadAttention所做的。但前向函数查询、键和值作为输入。根据博客,我需要为每个q、k和v初始化形状(d x d)的随机权重矩阵,并将每个向量与这些权重矩阵相乘,得到3个(n x d)矩阵。现在,q、k和v是torch.nn.MultiheadAttention所期望的,还是我弄错了?
我想确定点P(x,y,z)是否在由其中心C (cx,cy,cz)定义的三维空间中的二维圆内,半径R,并与平面正常圆位于N上。
我知道,在三维空间中的二维圆上的点P是由以下定义的:
P= R*cos(t)U _+ R_sin(t)*( N x U )+C
其中,U是从圆的中心到圆上任意点的单位向量。但给定一个点Q,我如何知道Q是在圆内还是在圆内?要选择的合适参数t是什么?我应该比较点Q的哪个坐标,看看它们是否在圆圈内?
谢谢。
目前,我正在尝试学习强化学习的概念。因此,我尝试使用tensorflow为cart pole示例实现SARSA算法。我将我的算法与对Q值函数使用线性逼近函数的算法进行了比较,发现我的算法非常相似。不幸的是,我的实现似乎是错误的或低效的,因为学习成功相当有限。有没有人能告诉我我是不是做错了什么?我的实现代码是: import numpy as np
import matplotlib.pylab as plt
import random
import gym
#define a neural network which returns two action dependent q-valu
在二维向量和二维数组中交换两行的复杂度是多少,我在这两种情况下都测试了时间复杂度,似乎在向量交换中几乎是O(1),但是在数组中工作慢,那么真正的复杂性是什么,为什么不同呢?
在数组中(非常慢):
int arr[N][N];
// input the array elements
while (q--) { // number of queires
int x, y;
scanf("%d %d", &x, &y);
swap(arr[x], arr[y]);
}
在向量中,上面的代码相同,但我没有使用int arr[N][N],而是使用了
我读了很多关于支持向量机的文章,在我看到的所有书籍和在线文章中,支持向量机被归类为使用超平面的线性分类器。如果数据不能线性可分,则可以将数据映射到高维,以启用线性边界。
现在,我看到了华盛顿大学著名机器学习专家佩德罗·多明戈斯教授的一些文章和幻灯片。他特别将支持向量机归类为一种基于实例的机器学习算法,类似于kNN.有人能跟我解释一下吗?
例如,在 in Communications of the ACM (2012年10月)中,他特别将支持向量机置于“实例”-based表示之下,而大多数机器学习人员会将其置于“超平面”下,并进行logistic回归。
此外,在他的中,他给出了这样的推
问题:如何有效地计算n维中两个轴对齐框之间的最小距离?
框格式:,A和B是由它们的最小和最大点,A_min,A_max,B_min,B_max给出的,每一个都是一个n维向量。也就是说,方框可以用数学形式写成下列笛卡尔间隔积:
A= A_min(1),A_max(1) x A_min(2),A_max(2) xX A_min(n),A_max(n)
B= B_min(1),B_max(1) x B_min(2),B_max(2) xX B_min(n),B_max(n)
图片:这里是一张用2D演示这个想法的图片:
注:注:我问这个问题,并自己回答,因为这个问题(一般n维形式)似乎在堆栈溢