У меня есть простая программа на 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]

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

-1
user3162587 23 Апр 2020 в 13:02

1 ответ

Я думаю, вы можете сделать это в tensorflow 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))

Выходы

[b'a' b'b' b'c' b'd']
[0.4 0.2 0.4 0.5]
[0.3364722 0.1823216 0.3364722 0.4054651]
0
Kyle 23 Апр 2020 в 14:39