我在pd.DataFrame具有以下格式的列中有資料:
col
0 ['str1', 'str2', 'str3']
1 []
2 ['str1']
3 ['str20']
我使用以下代碼來構建查找層:
lookup_layer = tf.keras.layers.StringLookup(max_tokens=335)
lookup_layer.adapt(df.col)
哪個失敗了:
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type list).
我還嘗試將列連接到一個串列中,因為錯誤表明嵌套串列是問題所在:
lookup_layer.adapt(itertools.chain(*df.col))
這導致:
AttributeError: 'str' object has no attribute 'shape'
我也嘗試了各種tf.cast/tf.convert_to_tensor呼叫,但無濟于事。
如何將我的DataFrame字串串列列轉換為 Tensorflow 接受的內容?
uj5u.com熱心網友回復:
作為替代方案,你可以使用tf.ragged.constant在你colpd.Series。
lookup_layer = tf.keras.layers.StringLookup(max_tokens=335)
lookup_layer.adapt(tf.ragged.constant(df.col))
uj5u.com熱心網友回復:
您必須將字串串列串列轉換為單個串列,然后您的StringLookup圖層應該可以作業:
import pandas as pd
import tensorflow as tf
import numpy as np
d = {'col': [['str1', 'str2', 'str3'], [], ['str1', 'str2', 'str3'], ['str1', 'str2', 'str3']]}
df = pd.DataFrame(data=d)
lookup_layer = tf.keras.layers.StringLookup(max_tokens=335)
flattened_data = sum(list(df.col), [])
lookup_layer.adapt(flattened_data)
print(lookup_layer.get_vocabulary())
['[UNK]', 'str3', 'str2', 'str1']
另請查看有關不同串列展平方法性能的這篇文章。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351801.html
