Я пытался использовать тензоры Ragged в тензорном потоке. Но я сталкиваюсь с проблемами при попытке накормить оборванный плейсхолдер данными. Все примеры Tensorflow на официальном сайте используют ragged.constants, который у меня отлично работает. К сожалению, нет примеров использования ragged.Placeholder.
. Ниже приведен простой код, который работает со штрафами, используя константы:
rt = tf.ragged.constant([[[1, 2 ] , [4, 5]] , [[6, 7] , [8, 9] , [10, 11]]] , ragged_rank=1 )
rt= tf.Print(rt.values , [rt.values] , "This is a constat")
with tf.Session() as sess :
re = sess.run([rt ])
output :
This is a constat[[1 2][4...]...]
, однако при попытке сделать то же самое с заполнителями я получаю ошибка. , ниже мой код с использованием заполнителей:
vals = [[[1, 2 ] , [4, 5]] , [[6, 7] , [8, 9] , [10, 11]]]
myTensor = tf.compat.v1.ragged.placeholder(dtype=tf.int32 , ragged_rank=1)
rt= tf.Print(myTensor.values , [myTensor.values] , "This is a placeholder")
with tf.Session() as sess :
re = sess.run([rt ],feed_dict={myTensor:vals})
Я получаю следующую ошибку:
<ipython-input-27-5c8fe49f6984> in <module>
6 rt= tf.Print(myTensor.values , [myTensor.values] , "This is a placeholder")
7 with tf.Session() as sess :
----> 8 re = sess.run([rt ],feed_dict={myTensor:vals})
C:\ProgramData\Anaconda3\envs\AutoEncoder\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata)
956 try:
957 result = self._run(None, fetches, feed_dict, options_ptr,
--> 958 run_metadata_ptr)
959 if run_metadata:
960 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
C:\ProgramData\Anaconda3\envs\AutoEncoder\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1116 feed_dict = nest.flatten_dict_items(feed_dict)
1117 for feed, feed_val in feed_dict.items():
-> 1118 for subfeed, subfeed_val in _feed_fn(feed, feed_val):
1119 try:
1120 subfeed_t = self.graph.as_graph_element(
C:\ProgramData\Anaconda3\envs\AutoEncoder\lib\site-packages\tensorflow\python\client\session.py in _feed_fn(feed, feed_val)
1096 for tensor_type, _, feed_fn, _ in _REGISTERED_EXPANSIONS:
1097 if isinstance(feed, tensor_type):
-> 1098 return feed_fn(feed, feed_val)
1099 raise TypeError('Feed argument %r has invalid type %r' %
1100 (feed, type(feed)))
C:\ProgramData\Anaconda3\envs\AutoEncoder\lib\site-packages\tensorflow\python\ops\ragged\ragged_tensor.py in _ragged_tensor_session_feed(feed_key, feed_val)
2366 def _ragged_tensor_session_feed(feed_key, feed_val):
2367 key_components = feed_key.nested_row_splits + (feed_key.flat_values,)
-> 2368 val_components = feed_val.nested_row_splits + (feed_val.flat_values,)
2369 return zip(key_components, val_components)
2370
AttributeError: 'list' object has no attribute 'nested_row_splits'
Очевидно, что данные, которые я передаю, не соответствуют структуре, ожидаемой заполнителем, но как именно я должен форматировать / структурировать свои данные.
также обратите внимание, что я использую Tensorflow 2.3 и включил совместимость с v1 и отключил активное выполнение.
благодарю за вашу помощь