我正在尝试使用RNN进行特定领域的分类研究,并累积了数千万条文本.由于运行整个数据集需要数天甚至数月,因此我只选择了一小部分用于测试,比如1M文本(80%用于培训,20%用于验证).我用文字矢量化预训练整个语料库,我还将Dropout应用于模型以避免过度拟合.当它在12小时内训练60000文本时,损失已经下降到相当低的水平,准确率为97%.我应该继续吗?它有助于继续培训吗?
它仍在运行第一个时代,我担心如果我现在停下来,模型将不会涵盖整个...
nlp machine-learning neural-network lstm recurrent-neural-network
我正在尝试使用单独的1维布尔数组来切割多维数组.出于某种原因,此代码不起作用:
>>> a = np.ones((100, 200, 300, 2))
>>> a.shape
(100, 200, 300, 2)
>>> m1 = np.asarray([True]*200)
>>> m2 = np.asarray([True]*300)
>>> m2[-1] = False
>>> a[:,m1,m2,:]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (200,) (299,)
>>> m2 = np.asarray([True]*300) # try again with all 300 dimensions True
>>> a[:,m1,m2,:]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: shape …Run Code Online (Sandbox Code Playgroud) 我正在编写一个opencv程序,我使用USB摄像头跟踪对象的位置.为了确保我使用我正在使用的相机获得尽可能高的帧速率,我做了一个线程处理,从相机读取图像.图像处理在另一个循环中完成,该循环还将对象位置写入文件.
现在我想要一种避免多次处理同一帧的方法.所以我想我可以将刚刚处理过的图像与视频流线程中的图像进行比较.
首先我尝试使用if frame1 == frame2,但得到错误消息"具有多个元素的数组的真值是不明确的.使用a.any()或a.all()." 经过一些谷歌搜索后,我找到了cv2.compare和标志CMP_EQ.制作了示例代码,并使其以某种方式工作.但是,我的问题是.怎么能以更容易或更好的方式完成?
import cv2
cv2.namedWindow('image1', cv2.WINDOW_NORMAL)
cv2.namedWindow('image2', cv2.WINDOW_NORMAL)
frame1 = cv2.imread("sample1.png")
frame2 = frame1
frame3 = cv2.imread("sample2.png")
compare1 = cv2.compare(frame1,frame2,0)
compare2 = cv2.compare(frame1,frame3,0)
cv2.imshow('image1', compare1)
cv2.imshow('image2', compare2)
if compare1.all():
print "equal"
else:
print "not equal"
if compare2.all():
print "equal"
else:
print "not equal"
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud) 在[ http://deeplearning.net/tutorial/lenet.html#lenet]中它说:
This will generate a matrix of shape (batch_size, nkerns[1] * 4 * 4),
# or (500, 50 * 4 * 4) = (500, 800) with the default values.
layer2_input = layer1.output.flatten(2)
Run Code Online (Sandbox Code Playgroud)
当我在numpy 3d数组上使用flatten函数时,我得到一维数组.但在这里它说我得到一个矩阵.flatten(2)如何在theano中运作?
numpy上的类似示例生成一维数组:
a= array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])
a.flatten(2)=array([ 1, 10, 19, 4, 13, 22, 7, 16, 25, 2, 11, …Run Code Online (Sandbox Code Playgroud) 我想在图例中同时显示颜色和标记。颜色代表一件事,标记代表另一件事。它看起来应该像附加的图像。这是我目前的代码:
x = np.arange(20)
y = np.sin(x)
fig, ax = plt.subplots()
line1 = ax.scatter(x[:10],y[:10],20, c="red", picker=True, marker='*')
line2 = ax.scatter(x[10:20],y[10:20],20, c="red", picker=True, marker='^')
ia = lambda i: plt.annotate("Annotate {}".format(i), (x[i],y[i]), visible=False)
img_annotations = [ia(i) for i in range(len(x))]
def show_ROI(event):
for annot, line in zip([img_annotations[:10],img_annotations[10:20]], [line1, line2]):
if line.contains(event)[0]:
...
fig.canvas.draw_idle()
fig.canvas.mpl_connect('button_press_event', show_ROI)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想根据以下描述计算网格的新质心。但我不想使用 Blender 的内置函数来计算质心,如此处所述,因为它们似乎没有给我我期望获得的质心。首先,我想计算网格的网格质心的面(三角形)的中心。然后我需要计算面部面积。新的质心是网格面中心的平均值,按其面积加权。我如何在 Python 中执行此操作(但不一定使用 Blender 的 Python API)?
我期待看到如何编译计算对数似然的Hessian的函数,以便它可以有效地与不同的参数集一起使用.
这是一个例子.
假设我们有一个函数来计算logit模型的对数似然,其中y是向量,x是矩阵.beta是参数的向量.
pLike[y_, x_, beta_] :=
Module[
{xbeta, logDen},
xbeta = x.beta;
logDen = Log[1.0 + Exp[xbeta]];
Total[y*xbeta - logDen]
]
Run Code Online (Sandbox Code Playgroud)
鉴于以下数据,我们可以如下使用它
In[1]:= beta = {0.5, -1.0, 1.0};
In[2]:= xmat =
Table[Flatten[{1,
RandomVariate[NormalDistribution[0.0, 1.0], {2}]}], {500}];
In[3]:= xbeta = xmat.beta;
In[4]:= prob = Exp[xbeta]/(1.0 + Exp[xbeta]);
In[5]:= y = Map[RandomVariate[BernoulliDistribution[#]] &, prob] ;
In[6]:= Tally[y]
Out[6]= {{1, 313}, {0, 187}}
In[9]:= pLike[y, xmat, beta]
Out[9]= -272.721
Run Code Online (Sandbox Code Playgroud)
我们可以写下它的粗麻布如下
hessian[y_, x_, z_] :=
Module[{},
D[pLike[y, x, z], {z, 2}]
]
In[10]:= …Run Code Online (Sandbox Code Playgroud) 我在使用R中的函数arma {tseries}和arima {stats}拟合ARMA模型时发现了一些奇怪的东西.
两个函数采用的估计程序存在根本区别,即在arma {stats}中的卡尔曼滤波器,而不是arma {tseries}中的ML估计.
鉴于两个函数之间的估计过程存在差异,如果我们使用相同的时间序列,则不会期望两个函数的结果完全不同.
好吧他们可以!
生成以下时间序列并添加2个异常值.
set.seed(1010)
ts.sim <- abs(arima.sim(list(order = c(1,0,0), ar = 0.7), n = 50))
ts.sim[8] <- ts.sim[12]*8
ts.sim[35] <- ts.sim[32]*8
Run Code Online (Sandbox Code Playgroud)
使用这两个函数拟合ARMA模型.
# Works perfectly fine
arima(ts.sim, order = c(1,0,0))
# Works perfectly fine
arma(ts.sim, order = c(1,0))
Run Code Online (Sandbox Code Playgroud)
将时间序列的级别更改为10亿
# Introduce a multiplicative shift
ts.sim.1 <- ts.sim*1000000000
options(scipen = 999)
summary(ts.sim.1)
Run Code Online (Sandbox Code Playgroud)
使用2个函数拟合ARMA模型:
# Works perfectly fine
arma(ts.sim.1, order = c(1,0))
# Does not work
arima(ts.sim.1, order = c(1,0,0))
## Error …Run Code Online (Sandbox Code Playgroud) 在Tensorflow CIFAR教程中,它讨论了使用多个GPU并提供此警告:
"天真地使用模型参数的异步更新会导致次优的训练性能,因为单个模型副本可能会在模型参数的陈旧副本上进行训练.相反,使用完全同步更新将与最慢的模型副本一样慢."
这是什么意思?有人可以提供一个非常简单的例子来说明这个警告吗?
神经网络主要用于分类。因此,输出层中神经元的激活表明您正在分类的任何类别。
是否有可能(并且正确)设计一个神经网络来获得 3D 坐标?这是三个输出神经元,其值在范围内,例如 [-1000.0, 1000.0],每个神经元。
regression coordinates neural-network deep-learning conv-neural-network
python ×4
numpy ×2
3d ×1
arrays ×1
c++ ×1
coordinates ×1
flatten ×1
image ×1
legend ×1
lstm ×1
math ×1
matplotlib ×1
mesh ×1
nlp ×1
opencv ×1
optimization ×1
r ×1
regression ×1
slice ×1
tensorflow ×1
theano ×1
time-series ×1