Я хочу использовать Tensorflow для вычисления градиентов функции.Однако, если я использую функцию tf.gradients
, она возвращает один список градиентов.Как вернуть список для каждой точки пакета?
# in a tensorflow graph I have the following code
tf_x = tf.placeholder(dtype=tf.float32, shape=(None,N_in), name='x')
tf_net #... conveniently defined neural network
tf_y = tf.placeholder(dtype=tf.float32, shape=(None,1), name='y')
tf_cost = (tf_net(tf_x) - tf_y)**2 # this should have length N_samples because I did not apply a tf.reduce_mean
tf_cost_gradients = tf.gradients(tf_cost,tf_net.trainable_weights)
Если мы запустим его в сеансе тензорного потока,
# suppose myx = np.random.randn(N_samples,N_in) and myy conveniently chosen
feed = {tf_x:myx, tx_y:myy}
sess.run(tf_cost_gradients,feed)
Я получу только один список, а не список длякаждый образец, как я хотел бы.Я могу использовать
for i in len(myx):
feed = {tf_x:myx[i], tx_y:myy[i]}
sess.run(tf_cost_gradients,feed)
, но это очень медленно!Что я могу сделать?Спасибо