Python 为什么dtype=object的NumPy数组不能转换为张量?

Python 为什么dtype=object的NumPy数组不能转换为张量?,python,numpy,tensorflow,keras,dtype,Python,Numpy,Tensorflow,Keras,Dtype,当我使用RNN尝试这个简单的imdb情绪分析时 我遇到了这个错误: ValueError:执行model.fit时无法将NumPy数组转换为张量(不支持的对象类型int)**” 我发现这个错误的原因是因为NumPy数组、train\u标签和test\u标签的数据类型被定义为对象,所以我通过astype(np.float32)将它们的数据类型更改为float32,现在它可以正常工作了 但问题出现了- 为什么带有dtype=object的NumPy数组不能转换为张量 另外,为什么错误会显示不支持的

当我使用
RNN
尝试这个简单的imdb情绪分析时

我遇到了这个错误:

ValueError:执行model.fit时无法将NumPy数组转换为张量(不支持的对象类型int)**”

我发现这个错误的原因是因为
NumPy
数组、
train\u标签
test\u标签
的数据类型被定义为对象,所以我通过
astype(np.float32)
将它们的数据类型更改为float32,现在它可以正常工作了

但问题出现了-

  • 为什么带有
    dtype=object
    NumPy
    数组不能转换为张量
  • 另外,为什么错误会显示
    不支持的对象类型int
    ?它从来都不是int,因为它被定义为object

对象数据类型数组可能包含非数字元素—字符串、列表、其他数组、
None
import keras
import tensorflow as tf
from keras.datasets import imdb
from keras.preprocessing import sequence
import numpy as np

VOCAB_SIZE = 88584
MAXLEN = 250
BATCH_SIZE = 64

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words = VOCAB_SIZE)

train_data = sequence.pad_sequences(train_data, MAXLEN) 
test_data = sequence.pad_sequences(test_data, MAXLEN)

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(VOCAB_SIZE, 2), 
    tf.keras.layers.LSTM(units=32), 
    tf.keras.layers.Dense(1, activation="sigmoid") 
])
model.compile(loss="binary_crossentropy",
              optimizer="rmsprop",
              metrics=['acc'])

history = model.fit(train_data, train_labels, epochs=1, validation_split=0.2)