Tensorflow: cómo modificar el valor en tensor
Como necesito escribir algunos preprocesos para los datos antes de usar Tensorflow para entrenar modelos, algunas modificaciones en eltensor
es necesario Sin embargo, no tengo idea de cómo modificar los valores entensor
como la forma de usarnumpy
.
La mejor manera de hacerlo es que puede modificartensor
directamente. Sin embargo, parece no posible en la versión actual de Tensorflow. Una forma alternativa está cambiandotensor
andarray
para el proceso y luego usartf.convert_to_tensor
para volver a cambiar.
La clave es cómo cambiartensor
andarray
.
1)tf.contrib.util.make_ndarray(tensor)
: https://www.tensorflow.org/versions/r0.8/api_docs/python/contrib.util.html#make_ndarray
Parece la forma más fácil según el documento, pero no puedo encontrar esta función en la versión actual de Tensorflow. En segundo lugar, la entrada esTensorProto
más bien quetensor
.
2) usoa.eval()
copiara
a otrondarray
Sin embargo, solo funciona al usartf.InteractiveSession()
en cuaderno
Un caso simple con códigos se muestra a continuación. El propósito de este código es hacer que eltfc
tiene la misma salida quenpc
despues del proceso.
INSINUACIÓN
Deberías tratar esotfc
ynpc
Son independientes entre sí. Esto cumple con la situación de que al principio los datos de entrenamiento recuperados están entensor
formatear contf.placeholder()
.
Código fuente
import numpy as np
import tensorflow as tf
tf.InteractiveSession()
tfc = tf.constant([[1.,2.],[3.,4.]])
npc = np.array([[1.,2.],[3.,4.]])
row = np.array([[.1,.2]])
print('tfc:\n', tfc.eval())
print('npc:\n', npc)
for i in range(2):
for j in range(2):
npc[i,j] += row[0,j]
print('modified tfc:\n', tfc.eval())
print('modified npc:\n', npc)
Salida:
tfc:
[[1. 2.]
[3. 4.]]
npc:
[[1. 2.]
[3. 4.]]
tfc modificado:
[[1. 2.]
[3. 4.]]
npc modificado:
[[1.1 2.2]
[3.1 4.2]]