1

我是编程新手,尤其是使用 tensorflow 编程。我正在制作玩具问题以了解使用它。在那种情况下,我想构建一个像 softmax 这样的函数,其中分母不是所有类的总和,而是一些采样类的总和。

在 python 中使用 numpy 会像:

def my_softmax(X,W, num_of_samples):
    K = 4
    S = np.zeros(((np.dot(X,np.transpose(W))).shape))
    for line in range(X.shape[0]):
        XW = np.dot(X[line],np.transpose(W))
        m = np.max(XW)
        samples_sum = 0
        for s in range(num_of_samples):
            r = (randint(0,K-1))
            samples_sum += np.exp(XW[r]- m)

        S[line] = (np.exp(XW-m))/(samples_sum)

    return S

这如何在张量流中实现?更一般地说,有没有一种可能的方法来创建新的“自定义”功能?

4

1 回答 1

0

您可以将 Python/numpy 函数包装为 tensorflow 运算符。见 tf.py_func https://www.tensorflow.org/versions/r0.9/api_docs/python/script_ops.html

但是,最好不要在生产环境中使用它,因为性能会(显着)受到影响。对于大多数 np.* 函数,您会找到可以使用的相应 tf.* 函数。尝试用矩阵/向量而不是 for 循环来表示所有计算。

另请参阅 https://www.tensorflow.org/versions/r0.11/api_docs/python/constant_op.html

于 2016-10-22T02:36:28.840 回答