hp电脑java图片抖动_HPPC:高效的Java集合库

HPPC的设想和目标

设想

程序员知道自己在做什么,并可能希望直接访问特定集合的类的内部存储(例如,不使用预定义的迭代器)绝大多数情况下程序使用单线程访问。例如,有一个在并发修改的重复验证的小点。使用原始集合的程序在开发期间使用单元测试和回归测试,所以他们在生产系统中的行为不会被严格验证(我们可以假设使用集合类的代码不会违反给出的一组断言)

从上面这些假设建立以下设计思想:

在HPPC中数据类型尽可能简单,对终端代码里的任何优化公开其内部存储。参数验证和状态有效性校验可以使用断言。这意味着约束仅仅能够检查请求是否在运行是发出(java1.4版本以上),当程序被测试和验证时,它运行从约束中检查不会有额外的开销。我们试图避免复杂的接口层次,尽管为了更明确而定义了特定的接口。程序员在设计时应该还是会选择合适的数据结构,并且应该知道自己在做什么。HPPC为大多数普通任务例如,过滤,迭代以及合并提供了工具,但是这些工具通常比实现低层次的对数据存储的直接访问更昂贵(如果需要的话可以使用)。对数据序列化没有特别的支持。这个实现不是线程安全的,并且不会试图提供快速的并发问题检测。

设计与实现

我们希望HPPC类模板可以实现为普通的Java类,以便典型的编程工具可用于开发,测试等。我们希望HPPC类模板可被用作通常的集合类(适用于封装的数值类型或其它对象类型),但同时我们希望特殊的类能够自动转化为一般类型(为了限制内存消耗并且提高效率由于JIT优化)

接口以及与Java集合API的关系

HPPC并不是严格按照Java集合API来制定的,尽管为了更便捷地使用我们的确尽量让HPPC API接近Java集合API。在很大程度上HPPC中缺少一个特别的是“视图”部分(子列表或具有键或值的集合)。特定的类提供了这些视图(例如ObjectObjectHashMap),但是对大部分来说,提供特殊的方法以接收范围和闭合的过滤器。如果表现仍不尽人意,每一个类的内部可用于直接操作。Java集合类和HPPC类之间的基本关系见下表。

71e0d274653adc64262750b413c642f5.png

相应类型的方法级的API也相似,但差异也是存在的(参考相应类的Java文档)。

下面让我们来看看它的实现方法,HPPC的示例很少,这里引用的是官方示例。

1.新建一个Java项目,记得下载并引入HPPC的jar包以及JUnit库。

2.将示例中的Helpers和HppcExample_001_IteratingOverLists类复制到相应的包下

3.运行单元测试,可以看到由HPPC实现的List类速度的确快了不少,至于其它的,大家也可以一一试验。

63261b8c2640825d99dcec967435f95e.png

开发资源

下载 v0.7.1、JavaDoc APIv0.7.0、JavaDoc API

API概述代码示例FAQ邮件列表

官方网站:https://labs.carrotsearch.com/hppc.html

开源地址:https://github.com/carrotsearch/hppc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是一个模型训练的配置文件。以下是对配置文件中各参数的解释: - `setup: end2end`:采用端到端(end-to-end)的训练方式。 - `Model backbone: resnet18`:使用ResNet-18作为模型的主干网络。 - `model_kwargs`:模型的额外参数设置。 - `head: mlp`:使用多层感知机(MLP)作为模型的头部。 - `features_dim: 128`:模型的特征维度为128。 - `nheads: 1`:模型的头数为1。 - `nclusters: 10`:模型的聚类数为10。 - `Dataset`:数据集相关的参数设置。 - `train_db_name: cifar-10`:训练集的数据名称为CIFAR-10。 - `val_db_name: cifar-10`:验证集的数据名称为CIFAR-10。 - `num_classes: 10`:数据集的类别数为10。 - `num_neighbors: 5`:每个样本的最近邻数为5。 - `Loss`:损失函数相关的参数设置。 - `criterion: end2end`:采用端到端(end-to-end)的损失函数。 - `criterion_kwargs`:损失函数的额外参数设置。 - `temperature: 0.1`:温度参数为0.1。 - `entropy_weight: 2.0`:熵权重为2.0。 - `Hyperparameters`:超参数设置。 - `epochs: 1000`:训练的总轮数为1000。 - `optimizer: sgd`:优化器采用随机梯度下降(SGD)。 - `optimizer_kwargs`:优化器的额外参数设置。 - `nesterov: False`:不使用Nesterov加速。 - `weight_decay: 0.0001`:权重衰减系数为0.0001。 - `momentum: 0.9`:动量因子为0.9。 - `lr: 0.4`:学习率为0.4。 - `scheduler: cosine`:学习率调度器采用余弦退火调度。 - `scheduler_kwargs`:学习率调度器的额外参数设置。 - `lr_decay_rate: 0.1`:学习率衰减率为0.1。 - `batch_size: 256`:批次大小为256。 - `num_workers: 8`:数据加载的线程数为8。 - `Transformations`:数据增强相关的参数设置。 - `augmentation_strategy: simclr`:采用SimCLR的数据增强策略。 - `augmentation_kwargs`:数据增强的额外参数设置。 - `random_resized_crop`:随机裁剪并调整尺寸。 - `size: 32`:裁剪后的尺寸为32。 - `scale: [0.2, 1.0]`:裁剪的尺度范围为0.2到1.0。 - `color_jitter_random_apply`:随机应用颜色抖动。 - `p: 0.8`:颜色抖动的概率为0.8。 - `color_jitter`:颜色抖动的参数设置。 - `brightness: 0.4`:亮度抖动的幅度为0.4。 - `contrast: 0.4`:对比度抖动的幅度为0.4。 - `saturation: 0.4`:饱和度抖动的幅度为0.4。 - `hue: 0.1`:色调抖动的幅度为0.1。 - `random_grayscale`:随机将图像转为灰度图的概率为0.2。 - `normalize`:图像的归一化参数设置。 - `mean: [0.4914, 0.4822, 0.4465]`:图像的均值。 - `std: [0.2023, 0.1994, 0.2010]`:图像的标准差。 - `transformation_kwargs`:数据转换的参数设置。 - `resize: 40`:将图像调整为40x40。 - `crop_size: 32`:将图像裁剪为32x32。 - `normalize`:归一化的参数设置,与上述`augmentation_kwargs`中的一致。 这些参数定义了模型训练过程中的各种设置,包括模型架构、数据集处理、损失函数、优化器、学习率调度器和数据增强等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值