Python 如何创建具有多个目标的TensorSliceDataset?

Python 如何创建具有多个目标的TensorSliceDataset?,python,keras,tensorflow2.0,Python,Keras,Tensorflow2.0,我有一个数据框架,它由一列文本和三个目标列组成,我想根据这篇文本进行预测 我可以很容易地使用以下代码预测其中一个目标: dataset = tf.data.Dataset.from_tensor_slices((df['text'], df['feature1'].values.astype(int) )) to

我有一个数据框架,它由一列文本和三个目标列组成,我想根据这篇文本进行预测

我可以很容易地使用以下代码预测其中一个目标:

dataset = tf.data.Dataset.from_tensor_slices((df['text'],
                                              df['feature1'].values.astype(int)
                                              ))

tokenizer = tfds.features.text.Tokenizer()

vocabulary_set = set()
for text_tensor, _ in dataset:
  some_tokens = tokenizer.tokenize(text_tensor.numpy())
  vocabulary_set.update(some_tokens)

vocab_size = len(vocabulary_set)

encoder = tfds.features.text.TokenTextEncoder(vocabulary_set)

def encode(text_tensor, label):
    encoded_text = encoder.encode(text_tensor.numpy())
    return encoded_text, label

def encode_map_fn(text, label):
    return tf.py_function(encode, inp=[text, label], Tout=(tf.int64, tf.int64))

encoded_dataset = dataset.map(encode_map_fn)

BUFFER_SIZE = 50000
BATCH_SIZE = 64
TAKE_SIZE = 500

train_data = encoded_dataset.shuffle(BUFFER_SIZE).skip(TAKE_SIZE)
train_data = train_data.padded_batch(BATCH_SIZE, padded_shapes=([-1],[]))

test_data = encoded_dataset.take(TAKE_SIZE)
test_data = test_data.padded_batch(BATCH_SIZE, padded_shapes=([-1],[]))

vocab_size += 1


model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(vocab_size, 2048))
model.add(tf.keras.layers.GlobalAveragePooling1D())
model.add(tf.keras.layers.Dense(2048, activation='tanh'))
model.add(tf.keras.layers.Dropout(.2))
model.add(tf.keras.layers.Dense(2048, activation='tanh'))
model.add(tf.keras.layers.Dropout(.2))
model.add(tf.keras.layers.Dense(16, activation='softmax'))

model.compile(optimizer=tf.keras.optimizers.Adam(),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(train_data, epochs=50, validation_data=test_data)
如何将tf.data.Dataset.from_tensor_切片更改为具有多个目标

比如:

dataset = tf.data.Dataset.from_tensor_slices((df['text'],
(df['feature1'].values.astype(int),
df['feature2'].values.astype(int),
df['feature3'].values.astype(int)))
似乎不起作用


我想在我的模型末尾有三个单独的softmax输出,对应于我想要预测的三个特性中的每一个

您是否已经找到了解决方案?多个值工作正常,但多个目标(如
tf.data.Dataset.from_tensor_切片((df.values,targets.values))
不起作用。