Я бы хотел обучить модель для сегментации c, так что тензор вывода содержит много нулей. Я создал набор данных tf.data, который возвращает разреженный тензор тензорного потока, содержащий выходные маски, чтобы он потреблял меньше оперативной памяти во время обучения, но когда я пробую tf.keras.fit, я получаю
TypeError: Failed to convert object of type <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'> to Tensor. Contents: SparseTensor(indices=Tensor("cond_2/Identity_1:0", shape=(None, 4), dtype=int64, device=/job:localhost/replica:0/task:0/device:GPU:0), values=Tensor("cond_2/Identity_2:0", shape=(None,), dtype=float32, device=/job:localhost/replica:0/task:0/device:GPU:0), dense_shape=Tensor("stack:0", shape=(4,), dtype=int64, device=/job:localhost/replica:0/task:0/device:GPU:0)). Consider casting elements to a supported type.
Я пытался использовать tf.sparse операции в потере отладки, как это
def test_loss(y_true, y_pred):
return tf.sparse.reduce_sum(y_true) - tf.sparse.reduce_sum(y_pred)
, но ошибка теперь
AttributeError: 'Tensor' object has no attribute 'indices'
Я предполагаю, что выходные данные модели должны быть объектом Tensor, и эта ошибка происходит при компиляции модель. Есть ли способ заставить выход модели tf.keras быть разреженным тензором?