tensorflow 基础知识点(一)

  1. tf.reduce_sum()
  2. tf.nn.embedding_lookup()
  3. tf.matmul()

归一化功能涉及函数:
reduce_sum() 用于计算张量tensor沿着某一维度的和,可以在求和后降维。具体参考:彻底理解 tf.reduce_sum()

tf.reduce_sum(
    input_tensor, 
    axis=None, 
    keepdims=None,
    name=None,
    reduction_indices=None, 
    keep_dims=None)
  • input_tensor:待求和的tensor;
  • axis:指定的维,如果不指定,则计算所有元素的总和;
  • keepdims:是否保持原有张量的维度,设置为True,结果保持输入tensor的形状,设置为False,结果会降低维度,如果不传入这个参数,则系统默认为False;
  • name:操作的名称;
  • reduction_indices:在以前版本中用来指定轴,已弃用;
  • keep_dims:在以前版本中用来设置是否保持原张量的维度,已弃用;
vocabulary_size = 10
embedding_size = 4
embeddings = tf.truncated_normal([vocabulary_size, embedding_size],
                            stddev=1.0 / math.sqrt(embedding_size))

with tf.Session() as session:
    # print(session.run(embeddings))
    norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
    normalized_embeddings = embeddings / norm
    print(session.run(norm))
    print("####",norm.shape, embeddings.shape)
    print(session.run(normalized_embeddings))

res:
在这里插入图片描述
tf.nn.embedding_lookup函数
tf.nn.embedding_lookup函数的用法主要是选取一个张量里面索引对应的元素。tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量对应的索引,tensor、id 可以使np对象或者tensor对象。

valid_dataset = tf.constant([1, 2, 3], dtype=tf.int32)
b = tf.nn.embedding_lookup(embeddings, valid_dataset)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(b))
    print("------------------")
    print(sess.run(embeddings))

res:
在这里插入图片描述
相似度计算。一般,向量的相似度指的是余弦相似度,即对应位置相乘。计算过程:a:shape(10, 4) b:shape(3,4),a 中每个向量与 b中每个向量的相似度结果:c:shape(10, 3)。计算时需要b转置
涉及的函数tf.matmul()

vocabulary_size = 10
embedding_size = 4
embeddings = tf.truncated_normal([vocabulary_size, embedding_size],
                            stddev=1.0 / math.sqrt(embedding_size))
norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
normalized_embeddings = embeddings / norm ## shape(10, 4)

valid_dataset = tf.constant([1, 2, 3], dtype=tf.int32)
valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset) ## shape(3, 4)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    # print(sess.run(valid_embeddings))
    # print("------------------")
    # print(sess.run(embeddings))
    similarity = tf.matmul(
        normalized_embeddings, valid_embeddings, transpose_b=True)
    print(sess.run(similarity)) ## shape(10, 3)
    print(similarity.shape)

res:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值