赞
踩
要有良好的复用性
要有良好的兼容性,不管是对于一维向量,还是二维矩阵,都应该能根据实际情况准确的输出相应的值
# 正确解是数组,区分输入是全部还是batch,都是二维矩阵,但是如果是一维向量,那就需要手动转为二维矩阵,才好使用numpy工具
def cross_entropy_error(y, t):
if y.ndim == 1:
y=y.reshape(1,y.size)# 将y转为二维矩阵,并命令行元素为数量个数
t=t.reshape(1,t.size)
# use batches
batch_size = y.shape[0]
return -np.sum(t * np.log(y + 1e-7)) / batch_size # 返回值只有一个,通过*完成数量积,然后sum计算
不管是直接将测试集数据全部输入,还是使用batch抽取数据输入,输入的结果都是二维矩阵
def accuracy_function(y, t):
accuracy_count = 0
predict_result = np.argmax(y, axis=1)
correct_reslut = np.argmax(t, axis=1)
for i in range(0, predict_result.shape[0]):
if predict_result[i] == correct_reslut[i]:
accuracy_count = accuracy_count + 1
return accuracy_count / y.shape[0] * 100
不管是将训练集数据一次性全部输入
在计算预测结果的准确率的时候还是除以行元素的个数,所以准确率不会受到影响
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。