小编JLa*_*ana的帖子

在Keras中创建自定义指标时,y_true和y_pred是什么?

我想在Keras中实现我的自定义指标.根据该文件,我的自定义指标应被定义为需要作为输入的两个张量,函数y_predy_true,并返回一个值张.

但是,我对这些张量中确切包含的内容y_pred以及y_true优化运行时的内容感到困惑.它只是一个数据点吗?这是整批吗?整个时代(可能不是)?有没有办法获得这些张量的形状?

有人可以指向一个值得信赖的地方,我可以获得这些信息吗?任何帮助,将不胜感激.不确定是否相关,但我正在使用TensorFlow后端.


到目前为止我尝试过的事情,为了回答这个问题:

  • 检查Keras指标文档(没有解释这些张量是什么).
  • 检查Keras指标源代码,并通过查看其他指标的Keras实现来尝试理解这些张量(这似乎表明y_true并且y_pred有整个批次的标签,但我不确定).
  • 读这些计算器的问题:1,2,3,和其他(没有回答我的问题,大部分都集中在OP没有明确认识的张量,并使用会话期间张量计算出的值之间的差).
  • 打印的值y_true,并y_pred在优化过程中,通过定义这样的指标:
    def test_metric(y_true, y_pred):
        y_true = K.print_tensor(y_true)
        y_pred = K.print_tensor(y_pred)
        return y_true - y_pred
Run Code Online (Sandbox Code Playgroud)

(遗憾的是,这些在优化过程中不会打印任何内容).

keras tensorflow

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

是否有Python方式将可选功能与功能的主要用途脱钩?

语境

假设我有以下Python代码:

def example_function(numbers, n_iters):
    sum_all = 0
    for number in numbers:
        for _ in range(n_iters):
            number = halve(number)
        sum_all += number
    return sum_all


ns = [1, 3, 12]
print(example_function(ns, 3))
Run Code Online (Sandbox Code Playgroud)

example_function这里只是遍历ns列表中的每个元素,并将它们减半3次,同时累积结果。运行此脚本的输出很简单:

2.0
Run Code Online (Sandbox Code Playgroud)

由于1 /(2 ^ 3)*(1 + 3 + 12)= 2。

现在,让我们说(出于任何原因,也许是调试或日志记录),我想显示一些有关所采取的中间步骤的信息example_function。也许然后我会将此函数重写为如下所示:

def example_function(numbers, n_iters):
    sum_all = 0
    for number in numbers:
        print('Processing number', number)
        for i_iter in range(n_iters):
            number = number/2
            print(number)
        sum_all += number
        print('sum_all:', sum_all)
    return sum_all
Run Code Online (Sandbox Code Playgroud)

现在,当使用与以前相同的参数调用它时,将输出以下内容:

Processing number 1 …
Run Code Online (Sandbox Code Playgroud)

python

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

如何正确使用向量范围构造函数?

我想vector<string通过使用其范围构造函数将文本文件中的所有行加载到a中,然后通过cout以下方式输出:

#include<iostream>
#include<fstream>
#include<vector>
#include<iterator>

using namespace std;

int main()
{
  ifstream file("file.txt");
  vector<string> strings(istream_iterator<string>(file) , istream_iterator<string>());

  for(auto s : strings)
    cout << s << endl;

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

在尝试编译上面的代码时,我得到了几个错误,例如:

error: no matching function for call to ‘begin(std::vector<std::basic_string<char> > (&)    (std::istream_iterator<std::basic_string<char> >, std::istream_iterator<std::basic_string<char> > (*)    ()))’
   for(auto s : strings)
                ^
Run Code Online (Sandbox Code Playgroud)

还有其他几个......

我想我在这里遗漏了一些明显的东西,有人可以帮忙吗?

c++ fstream vector most-vexing-parse c++11

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

在Visual Studio 2008上安装OpenCV 2.4.5

我在使用Visual Studio 2008(专业版)时尝试使用OpenCV遇到了一些困难.我相信我已经完成了运行OpenCV示例所需的一切,但由于运行时错误导致崩溃.这让我疯了,我希望有人可以提供帮助.

但首先要做的事情.

我的安装程序

  1. 从sourcefourge.net 下载OpenCV 2.4.5.

  2. 出现提示时,我选择"Z:\ Games instalados\OpenCV"作为从上面链接下载的.exe中的"Extract to"选项.

  3. 转到"控制面板" - >"系统" - >"高级系统设置",然后单击"高级"选项卡中的"环境变量".在"系统变量"框中,我突出显示"路径",然后单击"编辑...".在新窗口中,我在"变量值"的文本末尾添加了一个带有";"的安装目录 在它之前,即"; Z:\ Games instalados\OpenCV\opencv\build\x86\vc11\bin"(不带双引号).这是一个截图:截图.

  4. 在Visual Studio 2008中创建了一个新项目:File - > New - > Project ...,选择"Other Languages" - >"Visual C++ - >"Win32"作为项目类型;"Win32 Console Application"作为模板. 新项目 在新窗口中单击"下一步",然后选择"控制台应用程序","清空项目",然后选择"完成". 新窗户
  5. 在"解决方案资源管理器"中,右键单击我的程序并选择"属性".然后"配置属性" - >"C/C++" - >"常规",以及我添加的其他包含目录:
    • Z:\ Games instalados\OpenCV\opencv\build\include
    • Z:\ Games instalados\OpenCV\opencv\build\include\opencv
    • Z:\ Games instalados\OpenCV\opencv\build\include\opencv2"附加包括
  6. 现在在"配置属性" - >"C/C++" - >"链接器" - >"常规"中,在"附加库目录"中我添加了"Z:\ Games instalados\OpenCV\opencv\build\x86\VC11\LIB". 附加图书馆
  7. 现在在"配置属性" - >"C/C++" - >"链接器" - >"输入"中,在"附加依赖项"中我添加了:
    • opencv_calib3d245.lib
    • opencv_contrib245.lib
    • opencv_core245.lib
    • opencv_features2d245.lib
    • opencv_flann245.lib
    • opencv_gpu245.lib
    • opencv_highgui245.lib …

c++ opencv visual-studio-2008 visual-studio

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

OpenCV FindChessboardCorners约定是什么?

我正在使用OpenCV 2.2。

如果我cvFindChessboardCorners用来查找棋盘的拐角,则这些拐角按什么顺序存储在变量中corners(例如,首先是左上角,然后是行,然后是列)?

文档(没有太大帮助)。

c opencv

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

在matlab中使用plot3时如何保存图?

这符合我的预期:

    for i=1:100
      hold on;
      plot(i,i^2);
      drawnow;
    end
Run Code Online (Sandbox Code Playgroud)

绘制点在同一图中.

另一方面,这不是:

    for i=1:100
      hold on;
      plot3(i,i^2,sqrt(i));
      drawnow;
    end;
Run Code Online (Sandbox Code Playgroud)

由于它没有显示点的3d图,因此它仅显示它们在xy平面中的投影.不知何故,这个hold on陈述与plot3混淆了.

plot在3d情况下,当我在几个3d位置有点时,如何获得类似于2d情况的结果?

我试图让这个问题简明扼要,如果你认为我没有很好地解释它以获得满意的答案,请在评论中说明.

matlab plot matlab-figure

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

为什么HSV上的颜色分割更容易?

我听说如果你需要对你的软件进行颜色分割(如果它们满足某些阈值规则,如R <100,G> 100,10 <B <123,则通过将像素设置为1,从彩色图像创建二进制图像)最好先将图像转换为HSV.这是真的吗?为什么?

colors hsv computer-vision color-space image-segmentation

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

如何叠加来自不同细胞的图?

在我笔记本中的一个单元格中,我已经绘制了一些东西

myplot = plt.figure() plt.plot(x,y)

现在,在一个不同的单元格中,我想再次绘制完全相同的数字,但在它上面添加新的图(类似于连续两次调用时发生的情况plt.plot()).我尝试的是在新单元格中添加以下内容:

myplot plt.plot(xnew,ynew)

然而,我在新单元格中获得的唯一内容是新的情节,没有前一个情节.

怎么能实现这个目标?

python matplotlib jupyter-notebook

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