用tensorflow实现一个函数

时间:2016-10-21 20:39:52

标签: python function tensorflow softmax

我是编程新手,特别是用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

如何在tensorflow中实现? 更一般地说,是否有可能创建新的" custom"这样的功能?

1 个答案:

答案 0 :(得分: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