小编gcs*_*osh的帖子

使用tensorflow调试keras中间层或目标变量

我正在编写一个自定义目标来训练Keras(带有tensorflow后端)模型,但我需要调试一些中间计算.为简单起见,假设我有:

def custom_loss(y_pred, y_true):
    diff = y_pred - y_true
    return K.square(diff)
Run Code Online (Sandbox Code Playgroud)

我无法找到一种简单的方法来访问,例如,在训练期间中间变量diff或其形状.在这个简单的例子中,我知道我可以返回diff来打印它的值,但是我的实际损失更复杂,我不能在没有编译错误的情况下返回中间值.

有没有一种简单的方法来调试Keras中的中间变量?

debugging keras tensorflow

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

如何用std :: function在C++中实现策略模式

我正在讨论在C++中实现策略模式的最佳方法.到目前为止,我一直使用标准方式,其中上下文具有指向基本策略类的指针,如下所示:

 class AbstractStrategy{
 public:
     virtual void exec() = 0;
 }
 class ConcreteStrategyA{
 public:
     void exec();
 }
 class ConcreteStrategyB{
 public:
     void exec();
 }

 class Context{
 public:
     Context(AbstractStrategy* strategy):strategy_(strategy){}
     ~Context(){
          delete strategy;
       }
      void run(){
           strategy->exec();
      }
 private:
     AbstractStrategy* strategy_;
Run Code Online (Sandbox Code Playgroud)

由于有指向对象的指针可能会导致不良行为,我一直在寻找一种更安全的方式来实现这种模式,我发现这个问题在哪里std::function被提议作为处理这种模式的更好方法.

有人可以更好地解释一下如何std::function运作,也许有一个战略模式的例子?

c++ pointers strategy-pattern c++11 std-function

8
推荐指数
2
解决办法
1942
查看次数

即使两个值低于阈值,BOOST_CHECK_CLOSE也会失败

我正在使用boost执行单元测试.当我使用BOOST_CHECK_CLOSE时,我收到此失败消息:

difference{inf%} {-6.9388939e-18} and (0.0){0} exceeds 1.0000000000000001e-05%
Run Code Online (Sandbox Code Playgroud)

这听起来很奇怪,因为-6.9388939e-18和0.0之间的差异低于1.0000000000000001e-05%.此外,我不明白为什么它说差异是无限的.

有关这种行为背后原因的任何想法?

c++ boost unit-testing

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

复制构造函数以转移unique_ptr的所有权

我需要编写一个复制构造函数,它还传输要复制的对象的unique_ptr成员的所有权.情况如下:

class C{
   // C class stuff       
};

class A{
public:
    public A();
    public A(const A& a);
private:
    std::unique_ptr<C> c_;
}

class B{

public:

    B(const A& b) : a_(a){}

private:
     A a_;


};
Run Code Online (Sandbox Code Playgroud)

我该如何实现复制构造函数A

c++ copy-constructor ownership unique-ptr

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

从谷歌日志记录库的CHECK宏中捕获C++异常

我正在使用一个库,该库使用google日志库记录错误并使用CHECK宏检查断言.在我的代码中,我想在CHECK条件失败时捕获异常(例如,当应用程序因为它不存在而无法打开文件时),但即使使用catch(...)它也没有捕获任何内容并且程序崩溃而没有控制.

有没有办法在CHECK宏失败时捕获异常?或者,如果不可能,是否有解决方法来处理这些情况?

c++ exception try-catch

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

在OpenCV中使用gpu进行多线程

我编写了一个程序,用于在一组图像上使用gpu :: BroxOpticalFlow计算光流。在单线程执行的情况下,代码可以编译并正常运行。

由于我试图为光流计算找到最佳的参数配置,因此需要在同一组图像上多次运行代码。因此,为了加快处理速度,我决定使用多线程来并行运行具有不同参数的多个光流计算。为此,我只需为每个光流过程创建一个线程,并使用完全不同的对象和变量。

运行代码时,有时会从计算光流的gpu函数中获取以下运行时错误:

OpenCV Error: Gpu API call (NCV Assertion Failed: cudaError_t=77, file=/home/user/opencv-2.4.10/modules/gpu/src/nvidia/NCVBroxOpticalFlow.cu, line=1018
) in outputHandler, file /home/user/opencv-2.4.10/modules/gpu/src/optical_flow.cpp, line 72
OpenCV Error: Gpu API call (NCV Assertion Failed: cudaError_t=77, file=/home/user/opencv-2.4.10/modules/gpu/src/nvidia/NCVBroxOpticalFlow.cu, line=1018
) in outputHandler, file /home/user/opencv-2.4.10/modules/gpu/src/optical_flow.cpp, line 72
OpenCV Error: Gpu API call (NCV Assertion Failed: cudaError_t=77, file=/home/user/opencv-2.4.10/modules/gpu/src/nvidia/NCVBroxOpticalFlow.cu, line=1018
) in outputHandler, file /home/user/opencv-2.4.10/modules/gpu/src/optical_flow.cpp, line 72
OpenCV Error: Gpu API call (an illegal memory access was encountered) in copy, file /home/user/opencv-2.4.10/modules/dynamicuda/include/opencv2/dynamicuda/dynamicuda.hpp, line 877 …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading opencv gpu

5
推荐指数
0
解决办法
995
查看次数

如何返回对方法内创建的对象的引用

我推断返回对方法内创建的对象的引用的最佳方法,如下面的情况:

class A{
public:
    A(){}
    ~A(){}
};

class Foo{
public:
    Foo(){}
    ~Foo(){}
    A& create(int random_arg){
         // create object A and return its reference
    }
};

void other_method(){
     Foo f;
     A a = f.create();
     // do stuff with a
{
Run Code Online (Sandbox Code Playgroud)

我考虑了三种可能的解决方案:

  1. 创建一个原始指针并返回一个引用,但这很糟糕,因为无法保证该对象将被正确删除:

    A& create(int random_arg){
         A* a = new A();
         return *a;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个shared_ptr并按值返回shared_ptr.通过这种方式,shared_ptr将处理对象删除:

    shared_ptr<A> create(int random_arg){
         boost::shared_ptr<A> a_ptr(new A());
         return a_ptr;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一个shared_ptr并返回一个引用:

    A& create(int random_arg){
         boost::shared_ptr<A> a_ptr(new A());
         return *a_ptr;
    }
    
    Run Code Online (Sandbox Code Playgroud)

第二个解决方案似乎是最常用的,但是这样我必须在应用程序中传播shared_ptr,我宁愿有引用或更好的const引用.

您认为处理这种情况的最佳方法是什么?还有其他我未考虑过的可能性吗?

c++ pointers return-value shared-ptr return-by-reference

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

std :: unique_ptr转移const对象的所有权

A在方法中创建了一个类的对象.此方法还创建一个对象的实例,该对象BA刚刚创建的对象作为构造函数参数.B必须获取对象的所有权,A但不能修改它.这意味着A删除时应B删除,但在其生命周期内B无法修改A.

在这种情况下,std::unique_ptr<const A>作为成员变量B是转移A(std::move在构造函数中使用B)的所有权并保证不会被修改的正确方法吗?

c++ const ownership unique-ptr c++11

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

Android 上的 whatsapp 无法将完整网址识别为链接

我正在构建一个允许共享带有自定义参数(动态生成的优惠券代码)的链接的 Web 平台。此链接可以粘贴到 Whatsapp 中。使用 whatsapp Web 和在 iOS 下一切正常。但是,在 Android Whatsapp 应用程序中,该链接并未完全识别为超链接。特别是,如果我将http://test1234.com?r=action&id=xxx 之类的链接发送给朋友,则只有第一部分http://test1234.com被识别为超链接,因此可以单击。url 的其余部分被认为是简单的文本,因此,除非用户执行完整 url 的手动复制,否则用户将被重定向到没有操作 r=action 和参数 id=xxx 的页面。关于为什么这只发生在Android上的任何线索?这个问题有什么解决办法吗?

android hyperlink whatsapp

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

角度ui-carousel与缩略图

我有以下html代码呈现角度ui-bootstrp轮播:

<div class="slider" uib-carousel active="active" interval="myInterval" >
     <div uib-slide ng-repeat="slide in slides track by slide.id" index="slide.id">
         <img ng-src="{{slide.image}}">
     </div>
</div>
<div class="row">
     <div class="margin-top">
          <div ng-repeat="slide in thumbnails">
               <img ng-src="{{slide.image}}" ng-click="setActive(slide.id)">
          </div>
      </div>
</div>
Run Code Online (Sandbox Code Playgroud)

而setActive函数是:

$scope.thumbnails = $scope.slides.slice((0,5);

$scope.setActive = function(idx) {
  $scope.active=idx;
}
Run Code Online (Sandbox Code Playgroud)

当我单击缩略图时,滑块正确显示所选图像.但是,只要我点击旋转木马箭头,缩略图的ng-click就会停止工作(该功能通过角度调用,但旋转木马不会滑动到所选图像).我怎样才能解决这个问题?

carousel angularjs angular-ui-bootstrap

5
推荐指数
0
解决办法
1385
查看次数

从 git 克隆 Yii 项目

我们正在开发一个 Yii 网络应用程序,在本地笔记本电脑上设置它后,我们将项目推送到 git 存储库(没有vendor目录)。现在我想把它拉到另一台本地机器上,但是当我尝试这样做时,供应商目录当然不存在并且我收到一些错误(例如,访问 index.php 时出现空白页,运行要求时出错。 php...)。

我应该也推送供应商目录还是为每台本地机器下载 yii2 框架更好?在第二种情况下,我应该怎么做,因为我们之前已经使用 Composer 创建了项目并且我们不想再次调用它?或者有没有更好的方法来用 git 处理 Yii 项目?

php git yii

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

以向量为成员变量的对象的复制构造函数

我有一个类Avector<Object> object_list_一个成员变量。

我知道如果我有一个指针向量,我将需要编写一个特定的复制构造函数来实现深度复制。但是,在这种情况下,由于我没有指针,因此在复制 type 的对象时A,默认的复制构造函数也会自动调用Object或每个元素的复制构造函数,或者object_list_我是否必须编写自己的复制构造函数来执行此操作?

c++ vector member copy-constructor

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