как использовать dict в тензорном потоке - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть простая python программа, такая как

from collections import defaultdict
import math

x = ["a", "b", "a", "c", "d"]
y = [0.1, 0.2, 0.3, 0.4, 0.5]
z = defaultdict(float)
for i in range(len(x)):
    z[x[i]] += y[i]

result = [math.log(z[c]+1) for c in z]

Я хочу переписать код в tenorflow, но не знаю, как это сделать. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 23 апреля 2020

Я думаю, вы можете сделать это следующим образом в tenorflow 1.8

import tensorflow as tf

x = tf.constant(["a", "b", "a", "c", "d"])
y = tf.constant([0.1, 0.2, 0.3, 0.4, 0.5])

u, segment_ids, counts = tf.unique_with_counts(x)
t = tf.unsorted_segment_sum(y, segment_ids, tf.shape(u)[0])
r = tf.log(t + 1)

s = tf.Session()
print(s.run(u))
print(s.run(t))
print(s.run(r))

output

[b'a' b'b' b'c' b'd']
[0.4 0.2 0.4 0.5]
[0.3364722 0.1823216 0.3364722 0.4054651]
...