gpt4 book ai didi

python - 调用 TensorFlow 张量的 tf.keras.utils.to_categorical 时为 "ValueError: setting an array element with a sequence."

转载 作者:行者123 更新时间:2023-11-28 22:11:44 25 4
gpt4 key购买 nike

当我运行以下代码时:

import numpy as np
import tensorflow as tf

arr = np.array([2., 4., 5., 9.])
tf.keras.utils.to_categorical(arr, 10)

一切正常,输出为:

array([[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]], dtype=float32)

但是,如果我将 arr 替换为 tf.constant(arr)(或者我猜测但不确定任何 Tensor),如以下代码所示:

tf.keras.utils.to_categorical(tf.constant(arr), 10)

我收到以下错误:

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-139-507d6ce7c0a3> in <module>()
----> 1 tf.keras.utils.to_categorical(tf.constant(arr), 10)

.../miniconda2/lib/python2.7/site-packages/tensorflow/python/keras/utils/np_utils.pyc in to_categorical(y, num_classes, dtype)
38 last.
39 """
---> 40 y = np.array(y, dtype='int')
41 input_shape = y.shape
42 if input_shape and input_shape[-1] == 1 and len(input_shape) > 1:

ValueError: setting an array element with a sequence.

配置:

  • python :2.7
  • tensorflow :1.13.1
  • Keras(在 Tensorflow 内部):2.2.4-tf
  • 操作系统:Ubuntu 16.04

我怎样才能摆脱/解决这个问题?

一些背景信息:

我的主要问题是,当我调用 model.compile 时出现以下损失:

def loss(y_true, y_pred):
# Cross entropy loss
bin_true = y_true[:, 0]
print bin_true.eval()

dum = tf.keras.utils.to_categorical(bin_true, 66)
cls_loss = tf.keras.losses.categorical_crossentropy(dum, y_pred, True)

# MSE loss
cont_true = y_true[:, 1]
pred_cont = tf.keras.backend.sum(tf.nn.softmax(y_pred) * idx_tensor, 1) * 3 - 99
mse_loss = tf.keras.losses.mean_squared_error(cont_true, pred_cont)

# Total loss
return cls_loss + 0.5 * mse_loss

我在 dum = tf.keras.utils.to_categorical(bin_true, 66)) 行得到完全相同的错误

(我给出了一些上下文,因为我的整个“做事方式”可能是错误的......)

最佳答案

您可以尝试使用 tf.one_hot而不是 keras to_categorical

关于python - 调用 TensorFlow 张量的 tf.keras.utils.to_categorical 时为 "ValueError: setting an array element with a sequence.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55493820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com