当我尝试索引叶变量以使用自定义收缩函数更新梯度时遇到就地操作错误。我无法解决它。任何帮助表示高度赞赏!
import torch.nn as nn
import torch
import numpy as np
from torch.autograd import Variable, Function
# hyper parameters
batch_size = 100 # batch size of images
ld = 0.2 # sparse penalty
lr = 0.1 # learning rate
x = Variable(torch.from_numpy(np.random.normal(0,1,(batch_size,10,10))), requires_grad=False) # original
# depends on size of the dictionary, number of atoms.
D = Variable(torch.from_numpy(np.random.normal(0,1,(500,10,10))), requires_grad=True)
# hx sparse representation
ht = Variable(torch.from_numpy(np.random.normal(0,1,(batch_size,500,1,1))), requires_grad=True)
# Dictionary loss function
loss = nn.MSELoss()
# customized shrink function to update …Run Code Online (Sandbox Code Playgroud) python neural-network gradient-descent deep-learning pytorch
我有这个循环:
{% for div in myHandleHere %}
<div> {{ block.text }} </div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这实际上输出如下:
<div> one </div>
<div> two </div>
<div> three </div>
<div> ... </div>
Run Code Online (Sandbox Code Playgroud)
我想要的是,每2个div,将它们放入一个新的容器中,如:
<div class="container">
<div> one </div>
<div> two </div>
</div>
<div class="container">
<div> three </div>
<div> ... </div>
</div>
Run Code Online (Sandbox Code Playgroud)
请帮忙
在张量流中,如果一个有两个张量x,y并且一个想要y具有关于x使用的梯度tf.gradients(y,x).然后实际得到的是:
gradient[n,m] = sum_ij d y[i,j]/ d x[n,m]
Run Code Online (Sandbox Code Playgroud)
y的指数有一个总和,有没有办法避免这种隐含的总和?获得整个梯度张量gradient[i,j,n,m]?
我正在查看TensorFlow处理渐变的示例代码:
# Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)
# Compute the gradients for a list of variables.
grads_and_vars = opt.compute_gradients(loss, <list of variables>)
# grads_and_vars is a list of tuples (gradient, variable). Do whatever you
# need to the 'gradient' part, for example cap them, etc.
capped_grads_and_vars = [(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]
# Ask the optimizer to apply the capped gradients.
opt.apply_gradients(capped_grads_and_vars)
Run Code Online (Sandbox Code Playgroud)
但是,我注意到这个apply_gradients功能来源于GradientDescentOptimizer.这是否意味着,使用示例代码从上面,只能实现梯度下降一样的规则(注意我们可以改变opt = GradientDescentOptimizer或Adam或任何其他优化的)?特别是,做apply_gradients什么?我明确地检查了tf github页面中的代码,但它是一堆与数学表达式无关的python,因此很难分辨出它在做什么以及它如何从优化器更改为优化器. …
python machine-learning neural-network conv-neural-network tensorflow
在图论中,平面图是可以嵌入平面中的图,即,它可以在平面上绘制,使得其边缘仅在它们的端点处相交.
它们是用于平面图测试的许多算法(即确定给定图是否是平面图).最好的是在O(n)中,其中n是顶点的数量.
存在哪些支持以下功能的开源程序:
我正在测试 Python 3.4,我注意到 pickle 模块有一个新协议。因此,我对 2 个协议进行了基准测试。
def test1():
pickle3=open("pickle3","wb")
for i in range(1000000):
pickle.dump(i,pickle3,3)
pickle3.close()
pickle3=open("pickle3","rb")
for i in range(1000000):
pickle.load(pickle3)
def test2():
pickle4=open("pickle4","wb")
for i in range(1000000):
pickle.dump(i, pickle4,4)
pickle3.close()
pickle4=open("pickle4","rb")
for i in range(1000000):
pickle.load(pickle4)
Run Code Online (Sandbox Code Playgroud)
test1 标记:6.473 秒内调用 2000007 次函数
test2 标记:6.740 秒内调用 2000007 次函数
协议4比协议3稍微慢一些。这种差异可以忽略不计。然而,硬盘的使用情况确实不同。
pickle3 使用 7,868,672 字节。
pickle4 使用 16,868,672 字节。
那没有理由。我继续挖掘。读完PEP3154后,我大致了解了该协议。
对于协议 3 的元组(1,2,3,4,5,6,7)
0: \x80 PROTO 3
2: ( MARK
3: K BININT1 1
5: K BININT1 2
7: K …Run Code Online (Sandbox Code Playgroud) 我有一个Tornado Websocket服务器,我希望在30分钟不活动后超时.我用self.close()了30分钟不活动后关闭连接.但似乎有些连接即使在关闭后仍保持开放状态.
这里是代码的基本部分(在从这里获得帮助后实现:如何在Tornado Websocket中的一段时间后自动关闭连接服务器):
打开连接:
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def open(self, *args):
self.id = self.generate_id()
self.stream.set_nodelay(True)
# ... DO STUFF ...
self.ini_time = datetime.now()
self.message_number = 0
self.last_message_time = self.ini_time
self.write_message("Connection SUCCESSFUL! Thanks for connecting! Your connection ID is: %d :)" % self.id)
self.timeout = tornado.ioloop.IOLoop.current().add_timeout(timedelta(minutes=30), self.force_close)
print datetime.now()
print "New connection. ID: %d" % self.id
print "Total number of open connections: %d" % len(clients)
Run Code Online (Sandbox Code Playgroud)
收到消息时:
def on_message(self, message):
"""
when we receive some message we want some …Run Code Online (Sandbox Code Playgroud) 我想要一个带过滤器的2d卷积,这取决于张量流中的小批量样本.任何想法如何做到这一点,特别是如果每个小批量的样品数量未知?
具体而言,我有输入数据inp的形式的MB x H x W x Channels,我有过滤器F的形式的MB x fh x fw x Channels x OutChannels.
假设是
inp = tf.placeholder('float', [None, H, W, channels_img], name='img_input').
我想这样做tf.nn.conv2d(inp, F, strides = [1,1,1,1]),但这是不允许的,因为F不能有一个小批量维度.知道如何解决这个问题吗?
我有一个关于时间序列的下一步预测模型,它只是一个 GRU,上面有一个全连接层。当我在 50 个时期后使用 CPU 训练它时,损失为 0.10,但是当我用 GPU 训练它时,50 个时期后损失为 0.15。在这两种情况下,做更多的 epochs 并不能真正降低损失。
为什么在 CPU 上训练后的性能比 GPU 好?
我尝试更改数据和模型的随机种子,这些结果与随机种子无关。
我有:
蟒蛇 3.6.2
PyTorch 0.3.0
CUDNN_MAJOR 7
CUDNN_次要 0
CUDNN_PATCHLEVEL 5
编辑:
我还在torch.nn.utils.weight_normGRU 和全连接层上使用 PyTorch 的权重归一化。
假设在PyTorch我有model1和model2它有相同的架构.他们接受了相同数据的进一步培训,或者一个模型是othter的早期版本,但它在技术上与问题无关.现在,我想设置的权重model是的权重的平均model1和model2.我怎么能在PyTorch中这样做?
python ×8
pytorch ×3
tensorflow ×3
cudnn ×1
for-loop ×1
gpu ×1
gradient ×1
graph ×1
graph-layout ×1
html ×1
linux ×1
mini-batch ×1
planar-graph ×1
python-3.x ×1
tornado ×1
twig ×1
websocket ×1