山海旅人:修改故事的因果……
咩咩启示录:不错的家园建造和肉鸽的融合的游戏
2024/05.01 星期三
水晶之灾介绍
游戏介绍
概述
跳出盒子工作室制作
是一款卡牌战棋杀戮尖塔like类游戏,打算融合: - 战棋 - 卡牌管理元素 - 杀戮尖塔like的肉鸽
四个方向的创新
1. 多角色设计&卡牌循环机制创新
创意思考
多角色设计指的是玩家通过操作复数的角色来完成游戏给定的目标,其本质是在有限角色限制下的角色行为规划。
在很多游戏中,设计多角色设计往往是为了让玩家合理规划不同角色的合作,从而保护目标建筑,或者攻破目标单位。
但是常规的这种设计较为无聊,让我们进一步创新,假设需要保护的对象就是英雄本身……甚至更进一步,需要保护的对象和抽牌堆弃牌堆相关联……
具体而言:
两个主单位,两个从单位,主单位控制两个能力”抽牌堆“”弃牌堆“,弃牌堆炸了之后,置入弃牌堆的牌会被散落。而此时,获取卡牌需要使用移动过去,但是同时,为了调节 卡牌 和 移动 的 矛盾我们可以增加一个拾取范围。
我的看法:
1 | title:我的思考:无用的设计 |
u盘扩容盘检测以及修复
在网上购买的u盘往往会存在是扩容盘甚至是扩容TF卡的可能,对于这种U盘,最可恨的还不是其造假的纸面数据,而是其可能会带来的数据损失的风险。
下面简单介绍一下如何检测扩容盘以及如何修复扩容盘
扩容盘的检测
扩容盘的检测需要使用专业的工具,使用360或者电脑管家之类的工具往往是测不确的。我们一般可以通过两种方式来判断其是否是扩容盘: 1. 通过检测芯片型号来确定其真实的大小 2. 通过暴力填满来确定其真实的大小
通过检测芯片型号来确定其真实的大小
这是最简单的方式,但是也是最容易出错的方法之一。因为可以通过伪造芯片型号的技术日益高超,使得仅仅依靠型号检测来确认芯片的真实性变得不再可靠。
通过暴力填满来确定其真实的大小
一般会使用 mydisktest 来检测(图吧工具箱里面有) 这种方法是通过将U盘填满文件,以此来确定U盘的实际容量。这种方法虽然较为可靠,但耗时较长。
具体操作原理如下:
- 将文件持续写入u盘中
- 记录下所添加的文件的总大小,并且校验文件的完整性
- 通过校验所有文件存储的内容是否完整,我们可以知道u盘实际容量以及哪个片区存在问题。
还原扩容盘
一般有两种办法: 1. 修改U盘分区 2. 使用量产工具将U盘主控还原为真实大小
修改U盘分区的方法:
- 首先,我们需要下载一个分区工具,如DiskGenius。
- 将U盘插入电脑,打开DiskGenius软件,找到U盘所在的磁盘。
- 在磁盘列表中,右键点击U盘磁盘,选择“调整分区大小”选项。
- 在弹出的窗口中,选择“快速分区”,根据需要进行调整。
- 确认调整后,点击“保存更改”按钮,然后安全弹出U盘。
使用量产工具
- 查看U盘使用的芯片型号,可以使用这个软件:chipgenius(图吧工具箱-外设工具里面有)
- 下载对应的量产工具,可以查看网站:U盘量产工具,U盘量产工具下载大全_U盘量产网 (upantool.com)
- 将U盘插入电脑,运行量产工具,选择相应的U盘型号和量产方案。
- 在量产工具中,找到“容量调整”或“分区调整”选项,根据需要进行调整。
- 确认调整后,点击“开始量产”按钮,等待量产过程完成。
- 量产完成后,安全弹出U盘,即可看到U盘的实际容量。
tensor加法存在的问题
[[pytorch:张量(tenser)]] #### 问题阐述
python的实现逻辑和内存回收机制挺奇怪的。实际上,当使用tensor类型的时候,其更像是存储了一个指针:
- 创建变量的时候,先申请分配内存,然后再将变量指向其存储tensor的位置
- 计算的时候,实际上是不是将其对应的值赋予过去,而是将位置赋予过去。
这就导致了一个问题:
1 | before = id(x) |
输出:false
实际上,计算x+y的时候,系统先申请了一个内存空间,然后将计算结果放在这个空间内,最后将 x存储的位置改为这个内存空间的地址……
所有的变量都是存储在内存中的,如果x释放出来的内存没有被及时释放,这样就会带来很大的内存占用冗余,而这在本就对内存占用需求比较大的深度学习来说是致命的。
解决办法
所以说可以换一种写法,就可以使得其代码效率优化:
1 | z[:] = x + y |
这样的话,相当于将值进行了复写,而不是重复申请更换空间。而x+y产生的临时内存占用将会被赋值完之后被释放。
如果说,我们知道后面x中存储的数据不再会被使用了,也可以使用下面的写法:
1 | x += y |
pytorch:张量
[[pytorch]]
基础知识
导入
首先,我们导入torch
请注意,虽然它被称为PyTorch,但是代码中使用torch而不是pytorch
import torch
定义
张量表示一个由数值组成的数组,这个数组可能有多个维度
- 具有一个轴的张量:向量(vector)
- 具有两个轴的张量:矩阵(matrix)
- 具有两个轴以上的张量没有特殊的数学名称
初始化声明
torch提供的接口
使用 arange 创建
-
- x = torch.arange(12) - x - Copy to clipboard - tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
这个行向量包含以0开始的前12个整数,它们默认创建为整数
也可指定创建类型为浮点数
张量中的每个值都称为张量的 元素(element)
- 例如,张量 x 中有 12 个元素
除非额外指定,新的张量将存储在内存中,并采用基于CPU的计算
全1/全0初始化张量
-
全0
- torch.zeros((2, 3, 4)) - __________________ - tensor([[[0., 0., 0., 0.], - [0., 0., 0., 0.], - [0., 0., 0., 0.]], - [[0., 0., 0., 0.], - [0., 0., 0., 0.], - [0., 0., 0., 0.]]])
-
全1
- torch.ones((2, 3, 4)) - __________________ - tensor([[[1., 1., 1., 1.], - [1., 1., 1., 1.], - [1., 1., 1., 1.]], - [[1., 1., 1., 1.], - [1., 1., 1., 1.], - [1., 1., 1., 1.]]])
随机/概率分布 初始化张量
-
创建一个形状为(3,4)的张量,其中的每个元素都从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样
- >>>>>>>>>>>>>>>>> - torch.randn(3, 4) - ______________________ - tensor([[-0.0135, 0.0665, 0.0912, 0.3212], - [ 1.4653, 0.1843, -1.6995, -0.3036], - [ 1.7646, 1.0450, 0.2457, -0.7732]])
使用包含数值的Python列表(或嵌套列表),来为所需张量中的每个元素赋予确定值
在这里,最外层的列表对应于轴0,内层的列表对应于轴1
torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
tensor([[2, 1, 4, 3],
[1, 2, 3, 4],
[4, 3, 2, 1]])
属性
通过张量的shape属性来访问张量沿每个轴的长度
- x.shape
如果只想知道,即形状的所有元素乘积,可以检查它的大小(size)
- 因为这里在处理的是一个向量,所以它的shape与它的size相同
通过张量的numel()属性来访问张量中元素的总数
- x.numel()
变换
调用reshape函数改变一个张量的形状而不改变元素数量和元素值
-
例如,可以把张量x从形状为(12,)的行向量转换为形状为(3,4)的矩阵
这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵
要重点说明一下,虽然张量的形状发生了改变,但其元素值并没有变
注意,通过改变张量的形状,张量的大小不会改变
X = x.reshape(3, 4)
X
Copy to clipboard
我们不需要通过手动指定每个维度来改变形状
幸运的是,我们可以通过-1来调用此自动计算出维度的功能
即我们可以用x.reshape(-1,4)或x.reshape(3,-1)来取代 x.reshape(3,4)
我的思考
### tenser加法存在的问题 ![[tenser加法存在的问题]]
pytorch
基础数据结构
[[pytorch:张量(tenser)]]
图像处理 torchvision 库
torchvision.transforms
Dive Into Deep Learning
概述
《动手学深度学习》 — 动手学深度学习 2.0.0 documentation (d2l.ai)
00 预告【动手学深度学习v2】-跟李沐学AI-【完结】动手学深度学习 PyTorch版-哔哩哔哩视频
这是一本面向中文读者的有关使用pytorch来实现基本的人工智能算法的书籍。李沐老师为其制作了教学视频
我打算以李沐老师的课为线索,以这本书作为参考,开始学习深度学习,然后进一步实现我自己想要实现的功能。
课时记录及概要:
- [[d2l-0-配置环境]]
- [[d2l-1-基础知识和数据处理]]
- [[d2l-2-线性回归的简单实现]]
- [[d2l-3-softmax回归]]
- [[d2l-4-mlp多层感知机]]
- [[d2l-4-overfit过拟合现象]]