gpt4 book ai didi

python - Tensorflow:关于 tensorflow 函数

转载 作者:太空狗 更新时间:2023-10-29 21:48:41 24 4
gpt4 key购买 nike

我是 tensorflow 的新手。我有以下问题:

输入: float 列表(或动态数组。在 python 中,列表是要使用的数据类型)输出:是一个二维数组,大小为 len(input) × len(input)

例子1:

输入:

[1.0, 2.0, 3.0]

输出:

[[0.09003057, 0.24472847, 0.66524096], 
[0.26894142, 0.73105858, 0.0 ],
[1.0, 0.0, 0.0 ]]

我尝试使用 while 循环创建函数并独立计算每一行并将它们连接起来,但我的导师让我探索其他方法。

你能建议我解决这个问题的想法吗?

最佳答案

您可以通过以下方法实现此目的:

  1. 重复输入数组以创建平铺输入数据的方阵
  2. 创建一个由左上角的 ones 组成的蒙版
  3. 使用掩码进行 softmax。请注意,我们不能在此处使用 tf.nn.softmax,因为它也会为这些零提供小概率

这是执行此操作的 TensorFlow (v0.12.1) 代码:

def create_softmax(x):
x_len = int(x.get_shape()[0])

# create a tiled array
# [1, 2, 3]
# =>
# [[1,2,3], [1,2,3], [1,2,3]]
x_tiled = tf.tile(tf.expand_dims(x, 0), [x_len, 1])

# get the mask to do element-wise multiplication
mask = tf.ones_like(x_tiled) # returns an array of the same size filled with 1
mask = tf.matrix_band_part(mask, 0, -1) # zeros everythings except from the upper triangular part
mask = tf.reverse(mask, [False, True]) # reverses the y dimension

# compute masked softmax
exp = tf.exp(x_tiled) * mask
sum_exp = tf.reshape(tf.reduce_sum(exp, reduction_indices=1), (-1, 1))

x_softmax = exp / sum_exp

return x_softmax

关于python - Tensorflow:关于 tensorflow 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com