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

口红做网站多少钱四川全网推网络推广

口红做网站多少钱,四川全网推网络推广,全功能asp政府网站源码 带网上办事在线指南等功能,双鸭山建设局网站AI算法工程师-非leetcode题目总结 除了Leetcode你还需要这些实现nms旋转矩形IOU手动实现BN手动实现CONV实现CrossEntropyLoss 除了Leetcode你还需要这些 希望大家留言,我可以进行补充。持续更新~~~ 实现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-y1+1)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-yy1+1, 0)inter = w * hiou = inter / (area[i] + area[order[1:]] - inter)idx = np.where(iou <= threshold)[0]order = order[idx+1]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, returnPoints=True)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, dtype=np.float32)

手动实现BN

y = x − m e a n / v a r + e − 6 , . y = x - mean /var+e^-6,. y=xmean/var+e6,.
BN在训练的过程中和测试的过程中应该如何设置:
训练时的数据量大,分布更加稳定;eval数据量有限不建议大规模更改mean和var;
eval: trainning=False, track_running_stats=True。这个是期望中的测试阶段的设置,此时BN会用之前训练好的模型中的(假设已经保存下了)running_mean和running_var并且不会对其进行更新。一般来说,只需要设置model.eval()其中model中含有BN层,即可实现这个功能。
train: trainning=True, track_running_stats=True。这个是期望中的训练阶段的设置,此时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(axis=0)x_var = x.var(axis=0)# 对应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_var+self._eps)y = self._gamma*x_hat + self._betareturn y

手动实现CONV

使用了简化版本,类实现的太多了,背不上;

import numpy as npdef conv2d_numpy(input_data, kernel, stride=1, padding=0):# 获取输入数据的尺寸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)), mode='constant')# 执行卷积操作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]], dtype=np.float32)# 定义一个卷积核(滤波器)
kernel = np.array([[1, 1],[0, -1]], dtype=np.float32)# 执行自定义的卷积操作
result = conv2d_numpy(image, kernel, stride=1, padding=0)# 打印卷积结果
print(result)

实现CrossEntropyLoss

import torchdef my_cross_entropy(input, target, reduction="mean"):# 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.tj-hxxt.cn/news/102337.html

相关文章:

  • 免费咨询承诺书百度seo推广计划类型包括
  • 沈阳网站建设三好街关键词网站查询
  • 学做ppt的网站百度seo招聘
  • 自闭症网站的建设意义容易被百度收录的网站
  • 实验中心网站建设文案代写在哪里接单子
  • 有没有专门做教育培训的网站制作网站的基本步骤
  • 网站建设与管理案例柳洪轶廊坊首页霸屏排名优化
  • 湖北移动网站建设中国网评中国网评
  • 劫持网站代做排名百度招聘平台
  • 专做婴儿的网站搜狗引擎
  • 一那个网站可以做一建题百度保障客服电话
  • 分站城市网站如何做seo上海seo有哪些公司
  • 苏州营销型网站建设北京网站建设公司哪家好
  • wordpress图片视频分享代码上海自动seo
  • 锦州市城市建设服务中心网站网站平台如何推广
  • 做环保的网站有哪些如何编写一个网站
  • APP黄色网站石家庄头条今日头条新闻
  • 手机建网站怎么弄网店运营工资一般多少
  • 男人女人做邪恶的事网站淘宝流量助手平台
  • 淘宝官网首页入口手机如何做网站优化
  • 网站专题建设百度seo查询工具
  • .net企业网站重庆网站网络推广
  • 网站的建设维护北京刚刚传来特大消息
  • wordpress 英文上海快速排名优化
  • 苏州市住房建设局网站专业推广引流团队
  • 企业网站群建设规范成都疫情最新情况
  • 客户做网站嫌贵了肇庆网站推广排名
  • html做动态网站需要哪些软件下载网站开发培训
  • 我想做教育网站那里做国内电商平台有哪些
  • 网站建设 长沙怎么做好seo内容优化