【问题标题】:I'm implementing 'XOR' function and it fails for我正在实现“异或”功能,但它失败了
【发布时间】:2021-06-04 17:51:05
【问题描述】:
import numpy as np

def AND(x1, x2):
    x = np.array(x1,x2)
    w = np.array(0.5,0.5)
    b = -0.7
    tmp = np.sum(w*x) + b 
    if tmp <= 0:
        return 0
    else:
        return 1

def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

print(NAND(1,0))
print(NAND(1,1))

def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(w*x) + b 
    if tmp <= 0:
        return 0
    else:
        return 1

print(OR(0,1))
print(OR(0,0))

def XOR(x1, x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y

print(XOR(0,1))

我完成了与、或、与非门。它们都像我预期的那样工作。最后,我尝试通过按顺序组合 NAND、OR 和 AND 来创建 XOR 逻辑......但是这里出现了我从未预料到的回溯错误消息,如下所示。应该修改什么来实现我最初的目的。

TypeError:无法将“1”解释为数据类型

【问题讨论】:

    标签: python numpy typeerror xor


    【解决方案1】:

    AND 的第一行(和第二行)与 OR 和 NAND 的第一行不同。那就是问题所在。看到了吗?

    讽刺的是,您对 OR 和 NAND 进行了单元测试,但对 AND 却没有。

    【讨论】:

    • 是的,你是对的。实际上我是在自检时自己发现的。这就是为什么我只是来这里只是为了消除我的帖子,因为这只是愚蠢的错误……但是我在这里看到了几个专门的cmets。这个帖子应该留在这里。对不起我笨拙的英语。
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2011-08-25
    • 2012-03-25
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多