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)