Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tensorflow 2.0中,在运行Matlab引擎时,是否有任何方法将张量作为Matlab函数的参数传递?_Python_Tensorflow_Tensorflow2.0_Matlab Engine_Eager Execution - Fatal编程技术网

Python 在Tensorflow 2.0中,在运行Matlab引擎时,是否有任何方法将张量作为Matlab函数的参数传递?

Python 在Tensorflow 2.0中,在运行Matlab引擎时,是否有任何方法将张量作为Matlab函数的参数传递?,python,tensorflow,tensorflow2.0,matlab-engine,eager-execution,Python,Tensorflow,Tensorflow2.0,Matlab Engine,Eager Execution,这是一个很长的标题,但希望我能用几句话恰当地解释我自己: 我正试图使用Tensorflow最小化给定的分数函数,其灵感来自于年发表的文章。该分数函数的值通过调用Matlab脚本获得,该脚本只需提供一个参数(与输入变量张量相关) 为此,我使用了Tensorflow 2.0的beta版,它包括一个称为“急切执行”的功能,允许访问每个tensor的内容,而无需运行任何会话 在这里,您可能会发现我的代码有一处划痕: import tensorflow as tf import numpy as np e

这是一个很长的标题,但希望我能用几句话恰当地解释我自己:

我正试图使用Tensorflow最小化给定的分数函数,其灵感来自于年发表的文章。该分数函数的值通过调用Matlab脚本获得,该脚本只需提供一个参数(与输入变量张量相关)

为此,我使用了Tensorflow 2.0的beta版,它包括一个称为“急切执行”的功能,允许访问每个tensor的内容,而无需运行任何会话

在这里,您可能会发现我的代码有一处划痕:

import tensorflow as tf
import numpy as np
eng = matlab.engine.start_matlab()

def costFunction():
    z = tf.add(x,y).numpy()
    H = np.asarray(eng.matlabfunction(matlab.double(z.tolist()),...)) # There are other parameters (Python lists) to be passed as arguments to my Matlab script alongside them, not included for the sake of simplicity
    h = tf.convert_to_tensor(...) # Here I retrieve those elements from matrix H which I actually aim to maximize
    return h

x = tf.Variable(initial_value=tf.zeros([6,N], tf.float64), trainable=True)
opt = tf.optimizers.Adam(learning_rate=1e-5, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
iters = 1000
for i in range(iters):
    train = opt.minimize(costFunction, tunedPhases)
    if i % 100 == 0:
        print("Iteration {}, loss: {}".format(i+1, costFunction())) 
遗憾的是,由于我收到以下错误消息作为输出,此解决方案仍然无法运行:

ValueError: No gradients provided for any variable: ['Variable:0'].
经过详尽的搜索,我认为这个问题与这个旧的post()有关,它是通过从代价函数直接到张量的相应操作来解决的。但是,我别无选择,只能调用此matlabfunction并将其输出用作代价函数的输出

你对如何克服这个问题有什么想法吗


谢谢大家,祝大家度过愉快的一周

tensorflow无法在matlab中计算函数的梯度,因此不能像链接的示例中那样直接将其用作损失函数。matlab脚本做什么?在tensorflow中没有复制的方法吗?