我是编程新手,特别是用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"这样的功能?
答案 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