uso - tensorflow como usarlo
tensorflow: ValueError: configuraciĆ³n de un elemento de matriz con una secuencia (2)
Este error no muy útil se produce cuando uno de los valores en el argumento feed_dict
para tf.Session.run()
es un objeto tf.Tensor
(en este caso, el resultado de tf.reshape()
).
Los valores en feed_dict
deben ser matrices numpy, o algún valor x
que se pueda convertir implícitamente en una matriz numpy.array(x)
usando numpy.array(x)
. tf.Tensor
objetos del tf.Tensor
no se pueden convertir implícitamente , ya que hacerlo puede requerir mucho trabajo: en su lugar, debe llamar a sess.run(t)
para convertir un tensor t
en una matriz numpy.
Como notó en su respuesta, usar np.reshape(_y_, [-1, 1])
funciona, porque produce una matriz numpy (y porque _y_
es una matriz numpy para empezar). En general, siempre debe preparar los datos para ser alimentados usando numpy y otras operaciones de Python puro.
Estoy jugando con el código fijo de esta pregunta . Estoy obteniendo el error anterior. Google sugiere que podría ser algún tipo de desajuste de dimensiones, aunque mis diagnósticos no muestran ninguno:
with tf.Session() as sess:
sess.run(init)
# Fit all training data
for epoch in range(training_epochs):
for (_x_, _y_) in getb(train_X, train_Y):
print("y data raw", _y_.shape )
_y_ = tf.reshape(_y_, [-1, 1])
print( "y data ", _y_.get_shape().as_list())
print("y place holder", yy.get_shape().as_list())
print("x data", _x_.shape )
print("x place holder", xx.get_shape().as_list() )
sess.run(optimizer, feed_dict={xx: _x_, yy: _y_})
Mirando las dimensiones, todo está bien:
y data raw (20,)
y data [20, 1]
y place holder [20, 1]
x data (20, 10)
x place holder [20, 10]
Error:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-131-00e0bdc140b2> in <module>()
16 print("x place holder", xx.get_shape().as_list() )
17
---> 18 sess.run(optimizer, feed_dict={xx: _x_, yy: _y_})
19
20 # # Display logs per epoch step
/usr/local/lib/python3.4/dist-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict)
355 e.args = (e.message,)
356 raise e
--> 357 np_val = np.array(subfeed_val, dtype=subfeed_t.dtype.as_numpy_dtype)
358 if subfeed_t.op.type == ''Placeholder'':
359 if not subfeed_t.get_shape().is_compatible_with(np_val.shape):
ValueError: setting an array element with a sequence.
¿Alguna sugerencia de depuración?
Reemplazar la nueva forma por uno numpy
ayudó:
_y_ = np.reshape(_y_, [-1, 1])
la razón real por la cual aún no está claro, pero funciona.