tf.compat.v1.sparse_to_dense

函数原型:

tf.sparse_to_dense(
	sparse_indices, 
	output_shape, 
	sparse_values, 
	default_value, 
	name=None)
除去name参数用以指定该操作的name,与方法有关的一共四个参数 :
第一个参数sparse_indices:稀疏矩阵中那些个别元素对应的索引值。

     有三种情况:

     sparse_indices是个数,那么它只能指定一维矩阵的某一个元素
     sparse_indices是个向量,那么它可以指定一维矩阵的多个元素
     sparse_indices是个矩阵,那么它可以指定二维矩阵的多个元素

第二个参数output_shape:输出的稀疏矩阵的shape
第三个参数sparse_values:个别元素的值。

     分为两种情况:
     sparse_values是个数:所有索引指定的位置都用这个数
     sparse_values是个向量:输出矩阵的某一行向量里某一行对应的数(所以这里向量的长度应该和输出矩阵的行数对应,不然报错)
第四个参数default_value:未指定元素的默认值,一般如果是稀疏矩阵的话就是0

常见用法:将output_shape定义为稀疏矩阵的维度

import tensorflow as tf

multi_one_hot = tf.sparse.SparseTensor(indices=[[0, 0], [0, 1], [2, 0],
                                                [4, 0], [4, 1], [4, 2],
                                                [4, 3]],
                                       values=[30, 60, 15, 98, 9, 16, 15],
                                       dense_shape=[5, 4])

one_hot = tf.constant([30, 20, 50, 65, 0])
inputs = [one_hot, multi_one_hot]

dense_multi = tf.compat.v1.sparse_to_dense(sparse_indices=inputs[1].indices,
                                                       output_shape=inputs[1].dense_shape,
                                                       sparse_values=inputs[1].values)

print("dense_multi:",dense_multi)

在这里插入图片描述
常见用法2:最后一维设置最大长度,使用padding的方式

import tensorflow as tf

multi_one_hot = tf.sparse.SparseTensor(indices=[[0, 0], [0, 1], [2, 0],
                                                [4, 0], [4, 1], [4, 2],
                                                [4, 3]],
                                       values=[30, 60, 15, 98, 9, 16, 15],
                                       dense_shape=[5, 4])

one_hot = tf.constant([30, 20, 50, 65, 0])
inputs = [one_hot, multi_one_hot]
dense_multi = tf.compat.v1.sparse_to_dense(sparse_indices=inputs[1].indices,
                                                       output_shape=[inputs[1].dense_shape[0], 10],
                                                       sparse_values=inputs[1].values)

print("dense_multi:",dense_multi)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值