Uygulamamın verilerini TFRecords biçiminde almak için Tensorflow Reading Data kılavuzunu takip ettim ve bu verileri okumak için giriş pipeline'larında TFRecordReader kullanıyorum.Bir tensorflow giriş boru hattını skflow/tf ile kullanarak
Şimdi basit bir regresör oluşturmak için skflow/tf.learn kullanım kılavuzlarını okuyorum, ancak giriş verilerimi bu araçlarla nasıl kullanacağımı göremiyorum. Aşağıdaki kodda
, uygulama ValueError: setting an array element with a sequence.
ile regressor.fit(..)
çağrı başarısız olur.
Hata:
Traceback (most recent call last):
File ".../tf.py", line 138, in <module>
run()
File ".../tf.py", line 86, in run
regressor.fit(x, labels)
File ".../site-packages/tensorflow/contrib/learn/python/learn/estimators/base.py", line 218, in fit
self.batch_size)
File ".../site-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py", line 99, in setup_train_data_feeder
return data_feeder_cls(X, y, n_classes, batch_size)
File ".../site-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py", line 191, in __init__
self.X = check_array(X, dtype=x_dtype)
File ".../site-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py", line 161, in check_array
array = np.array(array, dtype=dtype, order=None, copy=False)
ValueError: setting an array element with a sequence.
Kodu:
check_array
çağrı gerçek dizi değil, bir tensör bekliyor gibi görünüyor
import tensorflow as tf
import tensorflow.contrib.learn as learn
def inputs():
with tf.name_scope('input'):
filename_queue = tf.train.string_input_producer([filename])
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)
features = tf.parse_single_example(serialized_example, feature_spec)
labels = features.pop('actual')
some_feature = features['some_feature']
features_batch, labels_batch = tf.train.shuffle_batch(
[some_feature, labels], batch_size=batch_size, capacity=capacity,
min_after_dequeue=min_after_dequeue)
return features_batch, labels_batch
def run():
with tf.Graph().as_default():
x, labels = inputs()
# regressor = learn.TensorFlowDNNRegressor(hidden_units=[10, 20, 10])
regressor = learn.TensorFlowLinearRegressor()
regressor.fit(x, labels)
...
. Verilerimi doğru şekle masaj yapmak için yapabileceğim bir şey var mı?
Ne senin regressor.fit çağrısından önce x = x.eval() ve etiketleri = labels.eval() do olur? Bu tensörü bir diziye göre değerlendirmeli, ama bunun şoförüyle yapmanın doğru yolu olduğuna şüphe yok ... – mathetes
@mathetes, bu işe yarayacak gibi görünüyor ama bu yola başlamadan önce, 'tf-y' yolu şeyler yapmak? Sezgim, TF grafiğinin, programımı değil, veriyi taşıması gerektiğidir. –
Kesinlikle, özür dilemedim ama sadece bir hata ayıklama yöntemi olarak ifade edildi. Bu yüzden bir cevap yerine yorum yazdım. Yine de size yardım edemem, skype – mathetes