小编GAU*_*AVA的帖子

在gdb中使用带有unordered_map的[]运算符可以得到未解析的运算符

我有一个C++代码,我在实例化一个unordered_map,然后使用cout打印它的值.这很好用.但是,当我尝试在gdb中运行它并打印unordered_map的值时,这给了我错误.下面是代码片段:

  std::unordered_map<std::string,int> mymap = {
                      { "Mars", 3000},
                      { "Saturn", 60000},
                      { "Jupiter", 70000 } };

    std::cout<< mymap.at("Mars");
    std::cout<< mymap["Mars"];
Run Code Online (Sandbox Code Playgroud)

上面的两个cout语句都打印了密钥"Mars"的unordered_map值.但是,当我使用gdb然后尝试使用以下语句在关键字"Mars"上打印mymap的值时,我会收到错误.

(gdb) print mymap.at("Mars")
Cannot resolve method std::unordered_map<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, int, 
std::hash<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > >, std::equal_to<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const, int> > >::at to any overloaded instance

(gdb) print mymap["Mars"]
Cannot resolve function operator[] to any overloaded instance
Run Code Online (Sandbox Code Playgroud)

我使用gdb时没有出错.

我已经尝试在gdb中使用whatis mymap来查看mymap是否存在于当前上下文中并且它表示它存在.此外,我尝试初始化一个int变量并在gdb中打印它并打印它.我不明白unordered_map有什么问题.

我使用下面的语句来生成可执行文件

gsrivas4@TitanX01:~/lcode1$ g++ -std=gnu++11 -O0 -g test1.cpp -o test1.out
Run Code Online (Sandbox Code Playgroud)

c++ gdb unordered-map c++11

9
推荐指数
1
解决办法
2222
查看次数

tf.keras.optimizers.Adam 中的 Clipnorm、clipvalue 与 global_clipnorm

我正在这里查看clipvalue, clipnorm, global_clipnorm参数的定义。我有一些与此相关的问题。参数的描述提到以下内容:tf.keras.optimizers.Adam

\n
    \n
  • clipnorm: 漂浮。如果设置,每个权重的梯度将被单独裁剪,使其范数不高于该值。
  • \n
  • clipvalue: 漂浮。如果设置,每个权重的梯度将被裁剪为不高于该值。
  • \n
  • global_clipnorm: 漂浮。如果设置,则所有权重的梯度都会被剪裁,以便它们的全局范数不高于该值。
  • \n
\n

问题:

\n
    \n
  • 由于权重的梯度(正如描述中所说的每个权重)是一维的,因此 Clipnorm 和 ClipValue 应该相同。在某些情况下,clipnorm 和 Clipvalue 是否不同?
  • \n
  • 似乎 global_clipnorm 计算模型中所有权重的范数。从可用选项来看,我们似乎在 tf.keras.optimizers.Adam 中没有\xe2\x80\x99 任何参数来对层的权重进行裁剪规范。我们有这个 api 选项吗?
  • \n
\n

deep-learning keras tensorflow

6
推荐指数
1
解决办法
1424
查看次数

为什么使用 PIL 与 OpenCV 加载时图像的宽度和高度会颠倒?

我正在使用PILOpenCV包加载图像。使用 加载图像时的高度和宽度与使用 加载图像时的高度和宽度相反。以下是打印使用这两个包加载的图像的高度和宽度的代码。PILcv2

\n
file = \'conceptual_captions/VL-BERT/data/conceptual-captions/val_image/00002725.jpg\'\n# load image using PIL\nimport PIL.Image\npil = PIL.Image.open(file).convert(\'RGB\')\nw, h = pil.size\nprint("width: {}, height: {}".format(w, h))\n
Run Code Online (Sandbox Code Playgroud)\n

打印输出\nwidth: 1360, height: 765

\n
# now using cv2\nimport cv2\nim = cv2.imread(file)\nprint("height, width, channels: {}".format(im.shape)) \n
Run Code Online (Sandbox Code Playgroud)\n

打印输出height, width, channels: (1360, 765, 3)

\n

我下载了图像并使用 Mac 上的信息选项检查了图像的大小。信息有width = 765height =\xe2\x80\x8a1360,与方法报告的相同cv2。为什么PIL给出错误的图像尺寸?

\n

当图像非常少时就会出现此问题。我链接的图像就是这样的一张图像。对于其余图像,PIL和报告的高度和宽度cv2是相同的。

\n

python opencv numpy image python-imaging-library

5
推荐指数
1
解决办法
3352
查看次数

在Tensorflow,Theano,Pytorch中使用的是GEMM还是BLAS

我知道Caffe使用通用矩阵到矩阵乘法(GEMM),它是基本线性代数子程序(BLAS)库的一部分,用于执行卷积运算。将卷积转换为矩阵乘法运算。我已提及以下文章。https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/

我想了解Theano,Tensorflow,Pytorch等其他深度学习框架如何执行卷积运算。他们是否在后端使用类似的库。关于此主题可能有一些文章。如果有人可以指出我的意思,或者可以给出答案进行解释。

PS:我在datascience.stackexchange.com上发布了相同的问题。由于我在那儿没有得到答复,因此我也将其张贴在这里。如果有更好的论坛发布此问题,请告诉我。

blas deep-learning caffe tensorflow pytorch

4
推荐指数
1
解决办法
1309
查看次数

Tensorflow tf.placeholder with shape = []

我正在查看一个 Tensorflow 代码,该代码使用形状 = [] 的占位符将学习率输入到图形中,如下所示:

self.lr_placeholder = tf.placeholder(dtype=tf.float32, shape=[])
Run Code Online (Sandbox Code Playgroud)

我查看了 Tensorflow ( https://www.tensorflow.org/api_docs/python/tf/placeholder )的官方文档页面以了解 shape=[] 的含义,但无法获得形状设置为空的解释列表。如果有人可以解释这是什么意思。

python shapes deep-learning tensorflow computation-graph

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

嵌套循环中的C++变量重新声明

下面是一个包含3个嵌套循环的代码.变量curs和tempv在最外层for循环的每次迭代中被重新声明.这应该给我错误,但我能够成功运行它没有错误的gcc 4.8.4.

for(int i = 0; i<lend; i++)
{
    string curs = vstring[digits[i]-'0'];
    vector<string> tempv;
    for(int j = 0; j<v.size(); j++)
    {
        for(int k = 0; k<curs.size(); k++)
        {
            tempv.push_back(v[j] + curs[k]);
        }
    }
    v = tempv;
}
Run Code Online (Sandbox Code Playgroud)

在for-loop中重新声明变量是否可以?我理解在C++中,变量不能在同一范围内重新声明.

c++ gcc syntax-error variable-declaration

0
推荐指数
1
解决办法
130
查看次数