假设我有一个Python Numpy数组a.
a = numpy.array([1,2,3,4,5,6,7,8,9,10,11])
Run Code Online (Sandbox Code Playgroud)
我想从这个长度为5的数组创建一个子序列矩阵,步长为3.结果矩阵因此如下所示:
numpy.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
Run Code Online (Sandbox Code Playgroud)
实现这一点的一种可能方式是使用for循环.
result_matrix = np.zeros((3, 5))
for i in range(0, len(a), 3):
result_matrix[i] = a[i:i+5]
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来实现这个Numpy?
假设我有以下损失功能:
loss_a = tf.reduce_mean(my_loss_fn(model_output, targets))
loss_b = tf.reduce_mean(my_other_loss_fn(model_output, targets))
loss_final = loss_a + tf.multiply(alpha, loss_b)
Run Code Online (Sandbox Code Playgroud)
要想象渐变的标准,loss_final可以做到这一点:
optimizer = tf.train.AdamOptimizer(learning_rate=0.001)
grads_and_vars = optimizer.compute_gradients(loss_final)
grads, _ = list(zip(*grads_and_vars))
norms = tf.global_norm(grads)
gradnorm_s = tf.summary.scalar('gradient norm', norms)
train_op = optimizer.apply_gradients(grads_and_vars, name='train_op')
Run Code Online (Sandbox Code Playgroud)
不过,我想梯度WRT的规范密谋loss_a和loss_b分开.我怎样才能以最有效的方式做到这一点?我一定要叫compute_gradients(..)上都loss_a和loss_b独立,然后将它们传递给前添加这两个梯度在一起optimizer.apply_gradients(..)?我知道由于求和规则,这在数学上是正确的,但它看起来有点麻烦,我也不知道如何正确地实现梯度的求和.而且,loss_final相当简单,因为它只是一个总和.如果loss_final更复杂,例如分裂怎么办?
我正在使用Tensorflow 0.12.
我在名为'filter.h'的头文件中有以下方法:
namespace std{
//some code
template <class T, class S, class BorderMethod>
tImage<T> binomial(const tImage<T> &in, const size_t k = 3) {
//do some computations
tImage<T> img = in.convolve<T, BorderMethod>(in, kernel);
return img;
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到的第一件事:这个方法的定义发生在header-file中.这是标准程序吗?
现在,实际问题:convolve即使in拥有这样的方法,对方法的调用也不会起作用.这是convolve类中方法的定义tImage<T>:
tImage<T> convolve(const gravis::tImage<T>& image, const gravis::tArray<typename tImageTraits<T>::Float_t>& kernel);
Run Code Online (Sandbox Code Playgroud)
我该如何调用此功能?
我有一个很大的word文档(> 400页),有很多标题的交叉引用.到目前为止,我总是提到标题的标题,但现在我想改变它并参考标题所在的页面.
我没有通过GUI找到解决方案(当然除了手动处理),所以我正在研究编写一些VBA.不幸的是,我只找到了一种方法来列出所有可以交叉引用的目标(via GetCrossReferenceItems),但我需要一种方法来访问实际的交叉引用字段.
你能帮帮我吗?交叉引用字段是否与超链接相同?
考虑下面的代码(我意识到这是不好的做法,只是好奇地看到它发生的原因):
#include <iostream>
int main() {
bool show = false;
int output = 3;
if (show = output || show)
std::cout << output << std::endl;
std::cout << "show: " << show << std::endl;
output = 0;
if (show = output || show)
std::cout << output << std::endl;
std::cout << "show: " << show << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这打印
3
show: 1
0
show: 1
Run Code Online (Sandbox Code Playgroud)
所以,显然在第二个if子句中,分配output,0实际上并没有发生.如果我重写这样的代码:
#include <iostream>
int main() {
bool show = false;
int …Run Code Online (Sandbox Code Playgroud) c++ ×2
if-statement ×1
methods ×1
ms-word ×1
numpy ×1
python ×1
templates ×1
tensorflow ×1
vba ×1
word-vba ×1