gpt4 book ai didi

python - 无法理解 "Collective intelligence"程序中的一行

转载 作者:太空狗 更新时间:2023-10-30 02:23:23 25 4
gpt4 key购买 nike

我正在研究“Programming collective intelligence”。在第 4 章中,Toby Segaran 构建了一个人工神经网络。书页上出现如下函数:

def generatehiddennode(self,wordids,urls):
if len(wordids)>3: return None
# Check if we already created a node for this set of words
sorted_words=[str(id) for id in wordids]
sorted_words.sort()
createkey='_'.join(sorted_words)
res=self.con.execute(
"select rowid from hiddennode where create_key='%s'" % createkey).fetchone()

# If not, create it
if res==None:
cur=self.con.execute(
"insert into hiddennode (create_key) values ('%s')" % createkey)
hiddenid=cur.lastrowid
# Put in some default weights
for wordid in wordids:
self.setstrength(wordid,hiddenid,0,1.0/len(wordids))
for urlid in urls:
self.setstrength(hiddenid,urlid,1,0.1)
self.con.commit()

我无法理解的是此函数第一行的原因:'if len(wordids>3): return None`。是调试代码,以后需要去掉吗?

附言这不是作业

最佳答案

对于出版的书来说,这是非常糟糕的代码! (from here一书中的所有例子都可以下载;相关文件是chapter4/nn.py。)

  • 没有文档字符串。这个功能应该做什么?从它的名字,我们可以猜测它正在生成神经网络“隐藏层”中的一个节点,但是 wordidsurls 有什么作用呢?
  • 数据库查询使用字符串替换,因此容易受到 SQL 注入(inject)攻击(特别是因为这与网络搜索有关,所以 wordids 可能来自用户查询,因此可能不受信任 —但是,也许它们是 id 而不是单词,所以在实践中没问题,但仍然是一个非常糟糕的习惯)。
  • 不使用数据库的表达能力:如果您想做的只是确定数据库中是否存在某个键,那么您可能想使用 SELECT EXISTS(...) 而不是而不是要求数据库向您发送一堆您随后将忽略的记录。
  • 如果已经有一 strip 有 createkey 的记录,则函数不执行任何操作。没有错误。那是对的吗?谁能说?
  • 单词的权重按单词的数量缩放,但 url 的权重是常量 0.1(也许总是有 10 个 URL,但按比例缩放会更好len(urls) 在这里。

我可以继续说下去,但我最好不要。

无论如何,为了回答你的问题,看起来这个函数正在为 neural network 的隐藏层中的节点添加一个数据库条目。 .我认为,这个神经网络在输入层有单词,在输出层有 URL。该应用程序的想法是尝试训练神经网络以根据查询中的词找到好的搜索结果 (URL)。请参阅函数 trainquery,它采用参数 (wordids, urlids, selectedurl)。大概(因为没有我必须猜测的文档字符串)wordids 是用户搜索的词,urlids 是搜索引擎提供给用户的 URL,而 selectedurl 是用户选择的那个。其想法是训练神经网络以更好地预测用户会选择哪些 URL,从而将这些 URL 放在未来搜索结果中更靠前的位置。

所以神秘的代码行阻止在隐藏层中创建节点,并链接到输入层中的三个以上节点。在搜索应用程序的上下文中,这是有道理的:在过于特化的查询上训练网络没有意义,因为这些查询不会经常重复出现,以至于训练不值得。

关于python - 无法理解 "Collective intelligence"程序中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216108/

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