我目前正在开发一个 Blackjack 纸牌检测项目,但由于标题中的 IndexError 而陷入停顿。我说其他几个线程也有类似的问题,但代码看起来与我的完全不同,所以我认为值得自己询问。
我不确定如何修复这个错误,所以任何建议或指针都是不胜感激。下面是回溯和代码。
IndexError Traceback (most recent call last)
File ../Blackjack/src/vision.py:155
153 deck = shuffle_deck(deck)
154 print('Shuffled: ', len(deck))
--> 155 player_hand, dealer_hand = dealing(deck)
157 display_hand(dealer_hand)
158 display_hand(player_hand)
File ../Blackjack/src/vision.py:131
129 if i == 0 or i % 2 == 0:
130 deal_player_card(deck)
--> 131 display_hand(player_hand)
132 for card in player_hand:
133 detect_player_card(card)
File ../Blackjack/src/vision.py:125
122 for index, image in enumerate(hand):
123 # Display each image with a unique window name
124 cv2.imshow(f"Card {index}", image)
--> 125 detect_player_card(image)
File ../Blackjack/src/vision.py:51
48 detected_player_cards = []
50 for result in results:
...
181 tensor([1, 2, 3])
182 """
--> 183 return self.__class__(self.data[idx], self.orig_shape)
IndexError: too many indices for tensor of dimension 2
检测玩家手中的牌
def detect_player_card(img):
results = model(img)
detected_player_cards = []
for result in results:
boxes = result['boxes']
scores = result['scores']
labels = result['labels']
for box, score, label in zip(boxes, scores, labels):
detected_player_cards.append({ 'box': box.tolist(),
'score': score.item(),
'label': label.item()})
return detected_player_cards
IndexError:2 维张量索引过多
错误发生在代码尝试使用过多索引访问二维张量或数组时。此错误消息表明正在尝试访问不存在的张量的元素,这通常是因为将张量视为具有比实际更多的维度。
在的情况下,回溯指向代码
self.__class__(self.data[idx], self.orig_shape)
中的
vision.py
文件的第 183 行。由于
self.data
是一个二维张量,而
idx
似乎包含多个索引(使其成为多维索引),因此会引发错误。
如果没有关于
self.data
结构以及
__class__
和
idx
定义的更多上下文,很难给出确切的解决方案。但是,我可以提供一些解决问题的步骤:
-
检查
idx
的值: 打印idx
的值及其形状以了解它包含的内容。确保它是一个整数或表示单个索引的整数列表/元组,而不是多维索引。 -
验证
self.data
的维度: 打印self.data
的形状以确认它是二维的。如果它不是二维的,需要相应地调整索引。 -
检查的索引逻辑: 如果
idx
包含多个索引,则意味着正在尝试访问二维张量的子部分。确保索引逻辑正确并且不会导致超出范围的访问。 -
考虑使用切片: 如果要访问
self.data
的范围,请考虑使用切片而不是单个索引。例如,self.data[0,:]
将访问第一行中的所有列。 -
提供更多上下文: 如果仍然遇到问题,请提供有关以下内容的更多信息:
-
self.data
的结构和内容 -
__class__
的定义及其预期行为 -
idx
的计算方式
-
通过提供更多上下文信息,我可以帮助更有效地调试问题。
标签:python,tensorflow,artificial-intelligence,index-error From: 78812319