小编rer*_*erx的帖子

如何使用累积渐变更新模型参数?

我正在使用TensorFlow构建一个深度学习模型.TensorFlow的新手.

由于某种原因,我的模型具有有限的批量大小,然后这种有限的批量大小将使模型具有高的方差.

所以,我想用一些技巧来增加批量.我的想法是存储每个小批量的渐变,例如64个小批量,然后将渐变相加,使用这64个小批量训练数据的平均梯度来更新模型的参数.

这意味着对于前63个小批量,不更新参数,并且在64小批量之后,仅更新模型的参数一次.

但由于TensorFlow是基于图形的,有谁知道如何实现这个想要的功能?

非常感谢.

python gradient tensorflow

15
推荐指数
1
解决办法
5812
查看次数

C++模板实例化:避免长开关

我有一个类取决于整数模板参数.在我的程序中的某一点,我想使用此模板的一个实例,具体取决于在运行时确定的此参数的值.这是一个简单的例子,演示了如何使用一个大的switch语句来解决这个问题:

#include <string>
#include <iostream>
#include <type_traits>

template<unsigned A>
struct Wrapper {
    typedef typename std::conditional<A==1, int, float>::type DataType;
    DataType content[A];
    void foo() {
        std::cout << A << std::endl;
    };
};    

int main(int argc, char *argv[])
{
    std::string arg = argv[1];
    int arg_int = std::stoi(arg);

    switch (arg_int) {
    case 1: {
        Wrapper<1> w;
        w.foo();
        break;
    }
    case 2: {
        Wrapper<2> w;
        w.foo();
        break;
    }
    case 3: {
        Wrapper<3> w;
        w.foo();
        break;
    }
    default:
        return 1;
    };

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

一旦我不仅有一个参数A …

c++ templates boost c-preprocessor

14
推荐指数
2
解决办法
1643
查看次数

OpenMP C++矩阵乘法并行运行较慢

我正在学习使用OpenMP执行for循环的paralel的基础知识.

可悲的是,我的paralel程序运行速度比串行版慢10倍.我究竟做错了什么?我错过了一些障碍吗?

double **basicMultiply(double **A, double **B, int size) {
   int i, j, k;
   double **res = createMatrix(size);
   omp_set_num_threads(4);
   #pragma omp parallel for private(k)
   for (i = 0; i < size; i++) {
      for (j = 0; j < size; j++) {
         for (k = 0; k < size; k++) {
            res[i][j] += A[i][k] * B[k][j];
         }
      }
   }
   return res;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢你!

c++ openmp matrix-multiplication

13
推荐指数
2
解决办法
2万
查看次数