Мне нужно работать с очень большим тензором, указанным ниже как np_data.Каждый элемент этого тензора изменяется соответственно статическим массивом numpy np_functions.Мне нужен способ индексирования np_functions в зависимости от того, включен ли индекс тензора. Run_fn.
import tensorflow as tf
import numpy as np
np_data = np.array([[1,0],
[1,0],
[0,1]])
np_functions = np.array([[1,0,1],
[2,1,0],
[3,0,1]])
def run_fn(_a, _, _data_in):
INDEX = run_fn_current_index_in_tensor_data_in?!?!?!?
if np_functions[INDEX][0] == 1:
return _data_in[0] + _data_in[1]
if np_functions[INDEX][0] == 2:
return _data_in[0] - _data_in[1]
if np_functions[INDEX][0] == 3:
return _data_in[0] / _data_in[2]
_data_in = tf.placeholder(tf.int32, shape=(3, 2), name='data_in')
data = tf.scan(lambda _a, _: run_fn(_a, _, _data_in), _data_in)
sess = tf.Session()
model = tf.global_variables_initializer()
sess.run(model)
np_data = sess.run(data, feed_dict={_data_in: np_data})
Помещение индекса в np_data или подача np_functions в tf.scan не является хорошим решением, поскольку тогда np_function становится динамическим тензором ибудет оцениваться на каждой итерации.np_functions является статическим и в каждой ячейке run_fn будет принимать одно и то же решение на всех итерациях.np_data меняет каждую итерацию.