gpt4 book ai didi

python - 值错误 : `sequences` must be iterable in Keras

转载 作者:行者123 更新时间:2023-12-05 05:10:16 28 4
gpt4 key购买 nike

我正在尝试构建一个情绪分析模型,但是当我开始训练时,出现错误,因为 ValueError: sequences must be iterable.

pad_sequences 是导致错误的原因。

代码直到包含pad_sequences的函数:

1)获取单词列表,去掉所有标点符号并将所有单词标记转换为小写:

 def get_processed_tokens(text):
filtered_text = re.sub(r'[^a-zA-Z0-9\s]', '', text)
filtered_text = filtered_text.split()
filtered_text = [token.lower() for token in filtered_text]
return filtered_text

2) 创建 token_idx 字典,将标记映射到整数以创建嵌入并过滤掉出现次数小于阈值的嵌入,阈值在训练集中给出为 5。

def tokenize_text(data_text, min_frequency =5):
review_tokens = [get_processed_tokens(review) for review in data_text]
token_list = [token for review in review_tokens for token in review]
token_freq_dict = {token:token_list.count(token) for token in set(token_list)}
most_freq_tokens = [tokens for tokens in token_freq_dict if token_freq_dict[tokens] >= min_frequency]
idx = range(len(most_freq_tokens))
token_idx = dict(zip(most_freq_tokens, idx))
return token_idx,len(most_freq_tokens)

3) 创建将被馈送到模型中的序列,以学习数据集中每个评论的嵌入、固定长度序列 (max_tokens)。如果序列小于最大长度,则用零预填充序列。

def create_sequences(data_text,token_idx,max_tokens):
review_tokens = [get_processed_tokens(review) for review in data_text]
review_token_idx = map( lambda review: [token_idx[k] for k in review if k in token_idx.keys() ], review_tokens)
padded_sequences = pad_sequences(review_token_idx, maxlen=max_tokens) ##this line gives error
return np.array(padded_sequences)

最佳答案

pad_sequences 函数 expects给定的序列对象具有 __len__ 属性(即基本上给出序列的数量)。 review_token_idx 是一个 map 对象,没有 __len__ 属性。所以你需要把它转换成一个对象,例如一个 list,它有这样一个属性:

padded_sequences = pad_sequences(list(review_token_idx), maxlen=max_tokens)

关于python - 值错误 : `sequences` must be iterable in Keras,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56778591/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com