当前位置: 首页 > news >正文

郑州人才网站太原今天刚刚发生的新闻

郑州人才网站,太原今天刚刚发生的新闻,网站建设属于技术活吗,厦门专业网站建设团队AI算法工程师-非leetcode题目总结 除了Leetcode你还需要这些实现nms旋转矩形IOU手动实现BN手动实现CONV实现CrossEntropyLoss 除了Leetcode你还需要这些 希望大家留言#xff0c;我可以进行补充。持续更新~~~ 实现nms import numpy as np def nms(dets, threshold):x1 dets… AI算法工程师-非leetcode题目总结 除了Leetcode你还需要这些实现nms旋转矩形IOU手动实现BN手动实现CONV实现CrossEntropyLoss 除了Leetcode你还需要这些 希望大家留言我可以进行补充。持续更新~~~ 实现nms import numpy as np def nms(dets, threshold):x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]score dets[:, 4]area (x2 - x1 1)* (y2-y11)keep []order score.argsort()[::-1]while len(order) 1:i order[0]keep.append(i)xx1 np.maximum(x1[i], x1[order[1:]])yy1 np.maximum(y1[i], y1[order[1:]])xx2 np.minimum(x2[i], x2[order[1:]])yy2 np.minimum(y2[i], y2[order[1:]])w np.maximum(xx2-xx1 1, 0)h np.maximum(yy2-yy11, 0)inter w * hiou inter / (area[i] area[order[1:]] - inter)idx np.where(iou threshold)[0]order order[idx1]return keepdets np.array([[10, 10, 50, 50, 0.9] , [20, 20, 50, 50, 0.8] ,[50, 50, 100, 100, 0.7] ]) print(nms(dets, 0.5))旋转矩形IOU import numpy as np import cv2# 中心点 矩形的w h, 旋转的theta角度不是弧度 def iou_rotate_calculate(boxes1, boxes2):area1 boxes1[:, 2] * boxes1[:, 3]area2 boxes2[:, 2] * boxes2[:, 3]ious []for i, box1 in enumerate(boxes1):temp_ious []r1 ((box1[0], box1[1]), (box1[2], box1[3]), box1[4])for j, box2 in enumerate(boxes2):r2 ((box2[0], box2[1]), (box2[2], box2[3]), box2[4])int_pts cv2.rotatedRectangleIntersection(r1, r2)[1]if int_pts is not None:order_pts cv2.convexHull(int_pts, returnPointsTrue)int_area cv2.contourArea(order_pts)inter int_area * 1.0 / (area1[i] area2[j] - int_area)temp_ious.append(inter)else:temp_ious.append(0.0)ious.append(temp_ious)return np.array(ious, dtypenp.float32) 手动实现BN y x − m e a n / v a r e − 6 , . y x - mean /vare^-6,. yx−mean/vare−6,. BN在训练的过程中和测试的过程中应该如何设置 训练时的数据量大分布更加稳定eval数据量有限不建议大规模更改mean和var; eval: trainningFalse, track_running_statsTrue。这个是期望中的测试阶段的设置此时BN会用之前训练好的模型中的假设已经保存下了running_mean和running_var并且不会对其进行更新。一般来说只需要设置model.eval()其中model中含有BN层即可实现这个功能。 train: trainningTrue, track_running_statsTrue。这个是期望中的训练阶段的设置此时BN将会跟踪整个训练过程中batch的统计特性。 import numpy as np class BN:def __init__(self, momentum, eps, num_features):初始化参数值:param momentum: 追踪样本整体均值和方差的动量:param eps: 防止数值计算错误:param num_features: 特征数量# 对每个batch的mean和var进行追踪统计self._running_mean 0self._running_var 1# 更新self._running_xxx时的动量self._momentum momentum# 防止分母计算为0self._eps eps# 对应论文中需要更新的beta和gamma采用pytorch文档中的初始化值self._beta np.zeros(shape(num_features, ))self._gamma np.ones(shape(num_features, ))def batch_norm(self, x):BN向传播:param x: 数据:return: BN输出x_mean x.mean(axis0)x_var x.var(axis0)# 对应running_mean的更新公式self._running_mean (1-self._momentum)*x_mean self._momentum*self._running_meanself._running_var (1-self._momentum)*x_var self._momentum*self._running_var# 对应论文中计算BN的公式x_hat (x-x_mean)/np.sqrt(x_varself._eps)y self._gamma*x_hat self._betareturn y手动实现CONV 使用了简化版本类实现的太多了背不上 import numpy as npdef conv2d_numpy(input_data, kernel, stride1, padding0):# 获取输入数据的尺寸input_height, input_width input_data.shape# 获取卷积核的尺寸kernel_height, kernel_width kernel.shape# 计算输出图像的尺寸output_height (input_height - kernel_height 2 * padding) // stride 1output_width (input_width - kernel_width 2 * padding) // stride 1# 初始化输出图像output_data np.zeros((output_height, output_width))# 填充输入数据根据填充数量添加额外的行和列if padding 0:input_data np.pad(input_data, ((padding, padding), (padding, padding)), modeconstant)# 执行卷积操作for i in range(0, input_height - kernel_height 1, stride):for j in range(0, input_width - kernel_width 1, stride):output_data[i // stride, j // stride] np.sum(input_data[i:i kernel_height, j:j kernel_width] * kernel)return output_data# 创建一个示例的二维图片数据4x4 像素 image np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]], dtypenp.float32)# 定义一个卷积核滤波器 kernel np.array([[1, 1],[0, -1]], dtypenp.float32)# 执行自定义的卷积操作 result conv2d_numpy(image, kernel, stride1, padding0)# 打印卷积结果 print(result)实现CrossEntropyLoss import torchdef my_cross_entropy(input, target, reductionmean):# input.shape: torch.size([-1, class])# target.shape: torch.size([-1])# reduction mean or sum# input是模型输出的结果与target求loss# target的长度和input第一维的长度一致# target的元素值为目标class# reduction默认为mean即对loss求均值# 还有另一种为sum对loss求和# 这里对input所有元素求expexp torch.exp(input)# 根据target的索引在exp第一维取出元素值这是softmax的分子tmp1 exp.gather(1, target.unsqueeze(-1)).squeeze()# 在exp第一维求和这是softmax的分母tmp2 exp.sum(1)# softmax公式ei / sum(ej)softmax tmp1 / tmp2# cross-entropy公式 -yi * log(pi)# 因为target的yi为1其余为0所以在tmp1直接把目标拿出来# 公式中的pi就是softmax的结果log -torch.log(softmax)# 官方实现中reduction有mean/sum及none# 只是对交叉熵后处理的差别if reduction mean: return log.mean()else: return log.sum()my_cross_entropy([1, 0], [1,1])
http://www.hkea.cn/news/14345812/

相关文章:

  • 宝山php网站开发培训iphone私人网址
  • 网站站点结构的构建营销策略有哪几种
  • 外贸品牌网站设计在线网站编辑
  • 足球比分网站怎么建设自己做网站的软件
  • 在安阳想建个网站怎么做如何进行产品开发
  • 济南网站怎么做seo是网站建设
  • 网站被百度惩罚放弃汕尾建设网站首页
  • 织梦网站定时树莓派wordpress博客
  • 香蜜湖网站建设微信视频号推广方法
  • 资源优化排名网站网站开发各年的前景
  • 网站基础建设英文翻译专门做网站的科技公司
  • 建设网站群套餐型网站建设合同
  • 做网站怎么开发客户源苏州网站建设自助建站模板
  • 哈尔滨营销型网站建设室内设计应届生简历
  • 上海网站公司设计网页访问紧急升级
  • 经典企业网站模板怎么制作网页步骤
  • 临漳网站建站百度排名工具
  • 网站建设怎么弄莱芜金点子广告电子版2022最新
  • 单位网站源码住建部禾建设部是一个网站吗
  • 泊头网站制作案例wordpress 交友
  • 弄一个网站网站官网建设的价格
  • 业务推广网站网站关键词优化的步骤
  • 网站模版切换网站全屏宽度是多少
  • 凡科可以做淘宝客网站吗提交链接
  • 做方案的网站月夜影视在线观看免费完整版
  • 哪些网站可以做平面设计wordpress弹出聊天
  • 上海网站建设外贸多功能创意产品设计
  • c 网站开发环境wordpress前台修改密码
  • 大朗网站建设公司nas ddnsto wordpress
  • 临安区规划建设局网站建设商务网站