运行代码时报错: TypeError: unsupported operand type(s) for -: ‘list‘ and ‘list‘

建立均方误差函数时,运行代码时报错: TypeError: unsupported operand type(s) for -: 'list' and 'list'
import numpy as np
def mean_squared(y, t):
    """
    :param y:神经网络输出y
    :param t: 监督数据
    :return: 均方误差
    """
    return 0.5*np.sum((y-t)**2)

t = [0,0,1,0,0,0,0,0]
y = [0.1,0.05,0.1,0.0,0.05,0.1,0.0,0.6]
mean_square = mean_squared(y,t)

print(mean_square)

代码输出:

Traceback (most recent call last):
  File "D:\pycharm\pythonProject2\deep-learing\均方误差.py", line 12, in <module>
    mean_square = mean_squared(y,t)
  File "D:\pycharm\pythonProject2\deep-learing\均方误差.py", line 8, in mean_squared
    return 0.5*np.sum((y-t)**2)
TypeError: unsupported operand type(s) for -: 'list' and 'list'

出错原因: 列表支持加法运算(合并列表),但是不支持减法运算,如下代码所示:

#  列表执行加法操作
a = [11,22,33]
b = [1,2,3]
print(a+b)

代码运行正常:

[11, 22, 33, 1, 2, 3]
#  列表执行减法操作
a = [11,22,33]
b = [1,2,3]
print(a-b)

代码运行报错:

TypeError: unsupported operand type(s) for -: 'list' and 'list'

正确解决方式:使用numpy

import numpy as np

a=np.array([11,22,33])
print(a)
b=np.array([1,2,3])
print(b)
print(a-b)

代码运行正常:

[11 22 33]
[1 2 3]
[10 20 30]

因此解决均方误差函数的方法时:使用numpy

t = np.array([0,1,0,0,0,0])
y = np.array([0.05,0.1,0.05,0.1,0.0,0.6])

或者:

m = mean_squared_error(np.array(y),np.array(t))

所以,正确的完整代码时:

import numpy as np
def mean_squared(y, t):
    """
    :param y:神经网络输出y
    :param t: 监督数据
    :return: 均方误差
       return 0.5*np.sum((y-t)**2)

t = np.array([0,0,1,0,0,0,0,0])
y = np.array([0.1,0.05,0.1,0.0,0.05,0.1,0.0,0.6])
mean_square = mean_squared(y,t)
# mean_square = mean_squared(np.array(y),np.array(t))

print(mean_square)
0.5975
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值