-2

我尝试自定义损失函数,但是当我运行以下代码时:

pressure_grad_x = tf.keras.backend.gradients(out2, cur_x_input)[0]
pressure_grad_y = tf.keras.backend.gradients(out2, cur_y_input)[0]
pressure_grad_z = tf.keras.backend.gradients(out2, cur_z_input)[0]
pressure_grad = tf.convert_to_tensor([pressure_grad_x, pressure_grad_y, pressure_grad_z])

会报错(以上代码在自定义函数中):</p>

<ipython-input-42-23232050871c>:34 call  *
    pressure_grad = tf.convert_to_tensor([pressure_grad_x, pressure_grad_y, pressure_grad_z])
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\util\dispatch.py:206 wrapper  **
    return target(*args, **kwargs)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\ops.py:1431 convert_to_tensor_v2_with_dispatch
    value, dtype=dtype, dtype_hint=dtype_hint, name=name)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\ops.py:1441 convert_to_tensor_v2
    as_ref=False)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\profiler\trace.py:163 wrapped
    return func(*args, **kwargs)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\ops.py:1566 convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\constant_op.py:346 _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\constant_op.py:272 constant
    allow_broadcast=True)
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\constant_op.py:290 _constant_impl
    allow_broadcast=allow_broadcast))
C:\Users\dell\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\framework\tensor_util.py:553 make_tensor_proto
    "supported type." % (type(values), values))

TypeError: Failed to convert object of type <class 'list'> to Tensor. Contents: [None, None, None]. Consider casting elements to a supported type.

当我试图解决它时,我发现pressure_grad_x(或pressure_grad_y,pressure_grad_z)的值是None。

我使用的模型是 LSTM 模型,并将自定义损失函数作为模型的最后一层。

out2 是 LSTM 模型的输出。cur_x_input、cur_y_input、cur_z_input是LSTM模型的输入。Tensorflow的版本是2.6.0。

我没有办法解决这个问题。我希望有人能帮我解决这个问题。

4

1 回答 1

0

我认为,你需要检查你输入的形状,我觉得,你给定的输入是 NONE。

通过使用 tf.shape 解决

于 2021-10-26T18:00:53.717 回答