私はプログラミング、特にテンソルフローを使ったプログラミングが初めてです。使ってわかるおもちゃ問題を作っています。その場合、分母がすべてのクラスの合計ではなく、サンプリングされたいくつかのクラスの合計であるソフトマックスのような関数を構築したいと考えています。
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
これをテンソルフローでどのように実装できますか? より一般的には、そのような新しい「カスタム」関数を作成する方法はありますか?