小编use*_*323的帖子

Keras/Tensorflow 中涉及梯度的自定义损失函数

我已经看到这个问题之前已经被问过几次,但没有任何解决方案。我的问题很简单:我想实现一个损失函数,它计算预测梯度和真值之间的 MSE(最终转向更复杂的损失函数)。

我定义了以下两个函数:

def my_loss(y_true, y_pred, x):
    dydx = K.gradients(y_pred, x)
    return K.mean(K.square(dydx - y_true), axis=-1)

def my_loss_function(x):
    def gradLoss(y_true, y_pred):
        return my_loss(y_true, y_pred, x)
    return gradLoss
Run Code Online (Sandbox Code Playgroud)

然后,在我的模型中,我调用

model_loss = my_loss_function(x)
model.compile(optimizer=Adam(lr=0.01),
              loss=model_loss)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

ValueError: An operation has没有任何for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

作为参考,整个代码包含在下面。实现这种损失函数的正确方法是什么?

import tensorflow as tf
from tensorflow import keras

import numpy as np
import math, random
import …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow

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

Mac OS上的内存泄漏检测

我正在尝试调试C代码,不幸的是我不能使用valgrind,因为我安装了Mavericks.

我正在使用lldb但不确定要运行什么命令来检查内存泄漏.

c memory-leaks lldb

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

在 C++ 中访问 dgemm

我需要在 C++ 中实现一个矩阵类,其中一个操作必须是通过 dgemm 进行矩阵乘法。我的教授在课堂上用 C 做了一个例子,但由于某种原因我不能让它在 C++ 中工作。这是我的头文件 matrix.h:

#include <iostream>
#include <stdlib.h>

extern "C" {
#include "blas.h"
}

[blah blah blah, matrix class here; overloaded * operator will do the matrix      
multiplication]

matrix operator* (const matrix &other){

matrix AxB(Nrows, other.Ncolumns, "(" + name + "*" + "other.name" + ")");

char TRANSA = 'N';
char TRANSB = 'N';
int M = Nrows;
int N = other.Ncolumns;
int K = Ncolumns;
double alpha = 1.;
double beta = 0.;

dgemm_ …
Run Code Online (Sandbox Code Playgroud)

c++ fortran

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

MATLAB稀疏矩阵求解器?记忆错误

在有限元问题的上下文中,我有一个12800x12800稀疏矩阵.我正在尝试使用MATLAB的\运算符求解线性系统,并使用mldivide得到内存不足错误.所以我只是想知道是否有办法加快速度.

我的意思是,像LU分解这样的东西实际上有助于解决内存错误吗?我在首选项中将堆大小增加到256 GB,这是我可以获得的最大值,并且仍然会出现内存不足错误.

另外,只是一个普遍的问题.我现在的笔记本电脑上有8GB的RAM.升级到16GB会有帮助吗?或者我可以做些什么来为MATLAB分配更多内存?我对这些东西很不熟悉.

在此输入图像描述

matlab linear-algebra sparse-matrix

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

如果 Python 中的条件未提供正确的结果

这对我来说是一个有点奇怪的问题,我不确定如何正确地命名这个问题。我有以下 MWE,它只是生成坐标点列表(x,t)并执行一些检查以查看它们是否位于用户指定的边界上。特别是, ifx[i] == 1.0t[i] != 0.0then 程序应该打印一条声明来说明这一点。我似乎无法弄清楚为什么if这里从未输入条件。我已经打印出值对x[i]t[i]验证是否确实存在满足条件的值对......

#Load Modules
import numpy as np
import math, random
from pylab import meshgrid

# Create the arrays x and t on an evenly spaced cartesian grid
N = 10
xa = -1.0;
xb = 1.0;

ta = 0.0;
tb = 0.4;

xin = np.arange(xa, xb+0.00001, (xb-xa)/N).reshape((N+1,1))
tin = np.arange(ta, tb+0.00001, (tb-ta)/N).reshape((N+1,1))

X_tmp,T_tmp = meshgrid(xin,tin)
x = np.reshape(X_tmp,((N+1)**2,1))
t = np.reshape(T_tmp,((N+1)**2,1)) …
Run Code Online (Sandbox Code Playgroud)

python if-statement numpy matplotlib

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

Makefile在c中包含多个标题

我最初在我的makefile中有这个:

all:
    gcc myFunctions1.h myFunctions1.c myFunctions2.h myFunctions2.c main.c -o main
Run Code Online (Sandbox Code Playgroud)

在我重新启动终端之前由于某种原因而工作.现在我收到这个错误:

clang: error: cannot specify -o when generating multiple output files
Run Code Online (Sandbox Code Playgroud)

那么这样做的正确方法是什么?

c makefile

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

OpenGL - 使用击键暂停动画

我需要无限期地暂停整个动画,直到用户再次按下相同的键.使用usleep我有一个粗略的停顿:

#include <unistd.h>

...

if(key == 'p')
    usleep(200000);
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望时间不确定,直到再次按下p(以毫秒为单位的睡眠测量,因此它不是很有用)有人能指出我如何做到这一点的方向吗?

c++ opengl

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

C - 函数的多个"输出"

我必须在这里做一些极其愚蠢的事情,但我无法弄清楚是什么.如果我在foo函数中printf值,它会显示正确的值.

但是如果我尝试在main中打印它们,我会得到无意义的结果(分别为0和1).

void foo(int a, int b){

    a = 1;
    b = 2;

}

int main(void){

    int a;
    int b;

    foo(a, b);

    printf(“%i \n”, a);
    printf(“%i \n”, b);

}
Run Code Online (Sandbox Code Playgroud)

c

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

fopen,文件名中包含整数

我有一大堆的系统编号的文件一样的Mesh0Coord.dat,Mesh0Elem.dat,Mesh1Coord.dat,Mesh1Elem.dat,等等.这是我想做的事:

int ID;
FILE *fp;

ID = 0; /* could be 0, 1, 2, etc. and so on for the names of the files */

fp = fopen(“Mesh[ID]Coord.dat”, “r”);
Run Code Online (Sandbox Code Playgroud)

Mesh[ID]Coord意味着应该在那里插入ID整数.有小费吗?

c fopen

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