python - 如何将编码序列(可变长度)编码为 tf.from_generator 的输入?
问题描述
我正在尝试创建一个循环神经网络。输入是用户历史的序列,其中每个历史由一个序列(具有不同长度)的编码(每个具有形状(300))组成。这是代码:
df['encodings_correct'] = [encoding if correct else
np.zeros(shape=encode_model.vector_size, dtype=np.float)
for encoding, correct in list(zip(nlp_encodings, df['correct']))]
encoding_depth = encode_model.vector_size
# Step 4 - Convert to a sequence per user id and shift features 1 timestep
seq = df.groupby('user_id').apply(
lambda r: (
tf.convert_to_tensor(np.concatenate(np.expand_dims(r['encodings_correct'].values, axis=-1), axis=-1)),
)
)
nb_users = len(seq)
# Step 5 - Get Tensorflow Dataset
dataset = tf.data.Dataset.from_generator(
generator=lambda: seq,
output_signature=(
tf.TensorSpec(shape=(None, encode_model.vector_size), dtype=tf.float32),
)
)
当我执行它时,tf.convert_to_tensor
会引发错误:
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).
我认为这与编码序列的可变长度有关,但我不明白如何解决它。
解决方案
推荐阅读
- appium - 将 Appium 驱动程序实例从一个类传递到另一个类
- jupyter-notebook - 在 Arch 上使用 Jupyter notebook 不支持 Pytorch Cuda
- sql - 恢复数据库 SQL Server linux
- angular - 在 angular html 之间从 assets 文件夹中添加 html
- php - 如何使用 php 文件读取系统变量
- python - 向不和谐用户发送二维码
- flutter - 将图像添加到卡片和文本
- amazon-web-services - 使用 S3 presigned-url 将文件上传到设备场
- laravel - 如何在 laravel 的订单表上将产品 ID 保存为 json 数组?
- python - python 测验的用户输入