2016-05-07 19 views

答えて

0

ソースコードは、この関数は一つだけelemsテンソルを取ることを示しています

def map_fn(fn, elems, dtype=None, parallel_iterations=10, back_prop=True, 
     swap_memory=False, name=None): 

私は、任意の*と**のパラメータが表示されません。

ネイティブ
+0

私もそう思います。ちょうどいくつかの確認が必要でした。 –

+0

@ADasテンソルなので、どんな形のベクトルでも構いません。 1テンソルで十分でしょう。 –

7

ないが、ここではそれを実現し、迅速機能です:今日のよう

def map(fn, arrays, dtype=tf.float32): 
    # assumes all arrays have same leading dim 
    indices = tf.range(tf.shape(arrays[0])[0]) 
    out = tf.map_fn(lambda ii: fn(*[array[ii] for array in arrays]), indices, dtype=dtype) 
    return out 

# example: batch affine tranformation 
x = tf.random_normal([4,5,6]) 
M = tf.random_normal([4,6,10]) 
b = tf.random_normal([4,10]) 

f = lambda x0,M0,b0: tf.matmul(x0,M0) + b0 
batch_y = map(f, [x,M,b]) 
+1

これは[投稿時に既に間違っていました](https://github.com/tensorflow/tensorflow/blob/2939f53ea2d5dc9de018d9ad64a3ac03d03d4925/tensorflow/python/ops/functional_ops.py#L213)。不必要に巻き込まれてしまいますので、下の答えをupvoteしてください。 – LucasB

6

、私はmap_fnがドキュメントがいることを言うように2つのテンソルを取るように強化されていることを確認 - 「elems:テンソルまたは(可能であれば入れ子にされた)テンソルのシーケンスであり、それぞれが最初の次元に沿ってアンパックされます。結果のスライスのネストされたシーケンスはfnに適用されます。 この例(numpy形式で示されています)でも、2つのテンソルがかかることがわかります。私はここにそれをコピーしています。

elems = (np.array([1, 2, 3]), np.array([-1, 1, -1])) 
alternate = map_fn(lambda x: x[0] * x[1], elems, dtype=tf.int64) 
# alternate == [-1, 2, -3] 

Source:

関連する問題