我有一个通用函数,它定义了我计划使用的ODE形式scipy.integrate.odeint,例如:
def my_ode(K, tau, y, u):
return K*u/tau - y/tau # dydt
Run Code Online (Sandbox Code Playgroud)
我的代码中有几个对象,它们都具有定义的形式的动态my_ode,但具有唯一的参数K和tau.我希望能够my_ode在我初始化对象时使用已设置的参数传递一个独特的句柄,这样当我更新我的对象时,我所要做的就是soln = odeint(my_ode, t, y, u)模拟时间t.
例如,如果我定义一个类:
class MyThing:
def __init__(self, ode, y0):
# I would rather not maintain K and tau in the objects, I just want the ODE with unique parameters here.
self.ode = ode
self.y = y0
self.time = 0.0
def update(self, t, u):
# I want this to look something …Run Code Online (Sandbox Code Playgroud) 在张量流上的cifar10示例中,卷积层似乎没有重量衰减.实际上除了两个完全连接的层之外,任何层都没有重量衰减.这是一种常见做法吗?我认为重量衰减适用于所有重量(偏差除外).
作为参考,这里是相关代码(wd是重量衰减因子):
# conv1
with tf.variable_scope('conv1') as scope:
kernel = _variable_with_weight_decay('weights', shape=[5, 5, 3, 64],
stddev=1e-4, wd=0.0)
conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
bias = tf.nn.bias_add(conv, biases)
conv1 = tf.nn.relu(bias, name=scope.name)
_activation_summary(conv1)
# pool1
pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1],
padding='SAME', name='pool1')
# norm1
norm1 = tf.nn.lrn(pool1, 4, bias=1.0, alpha=0.001 / 9.0, beta=0.75,
name='norm1')
# conv2
with tf.variable_scope('conv2') as scope:
kernel = _variable_with_weight_decay('weights', …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个生成器(迭代器支持执行下一个,也许在python中使用yield),它给出了来自{1,2,... n}(n和r是参数)的r个元素的所有组合,以便在选中的r元素,没有两个是连续的.
例如,对于r = 2且n = 4
生成的组合是{1,3}, {1,4}, {2, 4}.
我可以生成所有组合(作为迭代器)并过滤那些不符合标准的组合,但我们将做不必要的工作.
是否存在一些生成算法,即nextO(1)(如果不可能,则为O(r)或O(n)).
返回集合的顺序不相关(并且希望允许O(1)算法).
注意:我已将其标记为python,但语言无关的算法也会有所帮助.
更新:
我找到了一种将它映射到生成纯组合的方法!网络搜索显示组合可能有O(1)(虽然看起来很复杂).
这是映射.
假设我们有一个组合x_1, x_2, ... , x_r与x_1 + 1 < x_2, x_2 + 1 < x_3, ...
我们映射y_1, y_2, ..., y_r如下
y_1 = x_1
y_2 = x_2 - 1
y_3 = x_3 - 2
...
y_r = x_r - (r-1)
Run Code Online (Sandbox Code Playgroud)
这样我们就y_1 < y_2 < y_3 ... 没有非连续约束!
这基本上等于从n-r + 1中选择r个元素.因此,我需要做的就是为(n-r + 1选择r)运行代.
出于我们的目的,在生成事物之后使用映射就足够了.
选择svkcr答案的原因 …
我最近正在学习人工神经网络(ANN),并且已经有一个基于小批量培训的代码在Python中运行和运行.我按照迈克尔尼尔森的神经网络和深度学习一书,逐步解释了初学者的每一个算法.还有一个完全可用的手写数字识别代码,对我来说也很好.
但是,我试图通过将整个小批量传递到矩阵形式的反向传播来稍微调整代码.我还为此开发了一个工作代码,但代码在运行时执行速度很慢.有什么办法可以基于反向传播算法实现基于完整矩阵的网络小批量学习方法?
import numpy as np
import pandas as pd
class Network:
def __init__(self, sizes):
self.layers = len(sizes)
self.sizes = sizes
self.biases = [np.random.randn(y, 1) for y in sizes[1:]]
self.weights = [np.random.randn(y, x) for y, x in zip(sizes[1:], sizes[:-1])]
def feed_forward(self, a):
for w, b in zip(self.weights, self.biases):
a = sigmoid(np.dot(w,a) + b)
return a
# Calculate the cost derivative (Gradient of C w.r.t. 'a' - Nabla C(a))
def cost_derivative(self, output_activation, y):
return (output_activation - y)
def update_mini_batch(self, …Run Code Online (Sandbox Code Playgroud) python numpy backpropagation neural-network gradient-descent
问题:一个很长的RNN网
N1 -- N2 -- ... --- N100
Run Code Online (Sandbox Code Playgroud)
对于类似的优化器AdamOptimizer,compute_gradient()将为所有训练变量提供渐变.
但是,它可能会在某个步骤中爆炸.
类似于如何有效地应用梯度剪切张量流的方法 可以剪切大的最终梯度.
但是如何剪辑那些中级的呢?
一种方法可能是从"N100 - > N99"手动执行backprop,剪辑渐变,然后是"N99 - > N98"等等,但这太复杂了.
所以我的问题是:是否有更简单的方法来剪辑中间渐变?(当然,严格来说,它们不再是数学意义上的渐变)
我正在从事 AI 项目,但我在 Python 方面仍然不是很有经验。
我正在尝试构建和测试这个项目。
我遵循了所有说明,但是当我尝试启动 python 脚本时仍然出现此错误:
类型错误:无法将 proto 文件构建到描述符池中!文件“tensorflow_serving/apis/classification.proto”的原型描述符无效:tensorflow_serving/apis/classification.proto:未加载导入“tensorflow_serving/apis/model.proto”。tensorflow.serving.ClassificationRequest.model_spec:“tensorflow.serving.ModelSpec”似乎是在“model.proto”中定义的,它不是由“tensorflow_serving/apis/classification.proto”导入的。要在此处使用它,请添加必要的导入。
有没有人知道我错过了什么?
我正在尝试在Tensorflow中构建一个DAG,我需要采用目标各个区域的模式(最常见的值).这是为了构建下采样目标.
现在,我正在为我可能遇到的每种情况预先处理下采样目标,保存它们,然后加载它们.显然,如果它被集成到我的Tensorflow图中,这将更容易,因此我可以在运行时下采样.
但我到处寻找,我找不到任何证据,证明tf.reduce_mode其功能与此相同tf.reduce_mean.有没有办法在Tensorflow图中构建此功能?
谷歌今年为seq2seq制作了5个不同的软件包:
哪个包实际上值得用于实现?似乎它们都是不同的方法,但它们都不够稳定.
的merge和switch可能不开放使用一般用户。并且我搜索了源代码:
在中有一个描述merge:
返回的可用元素的值
inputs。
可用意味着什么?归还switch吗?这是一个演示:
from tensorflow.python.ops import control_flow_ops
x_0, x_1 = control_flow_ops.switch(tf.constant(2), False)
x_2, x_3 = control_flow_ops.switch(tf.constant(7), True)
y = control_flow_ops.merge([x_0, x_1, x_2, x_3])
with tf.Session() as sess:
print(sess.run(y))
Run Code Online (Sandbox Code Playgroud) 我一直试图在Jupyter笔记本中显示gif,但遇到了一些麻烦。我不断得到一个空白的图像文件。
我试过使用此GitHub存储库中的 html 。
![wignerfunction][1](../gifs/wigner_rotation_animate.gif "wigner")
Run Code Online (Sandbox Code Playgroud)
和
from IPython.display import Image
Image(url='example.gif')
Run Code Online (Sandbox Code Playgroud)
到目前为止,以上方法均无效。
谢谢
tensorflow ×6
python ×5
adam ×1
algorithm ×1
clipping ×1
combinations ×1
control-flow ×1
function ×1
gradient ×1
ipython ×1
jupyter ×1
lambda ×1
numpy ×1
python-3.x ×1