2024 09 18, 2112 今日內容
2024-09-18, 21:12-今日內容
我懂了! 我悟了! 我经常说y = ax+b 就是说a事constant, 我们要对x进行操作对吧。这里我的NN,其实就是吧weight… Neuron就是最简单的linear layer和activation function组成的。 概率密度函数 和概率质量函数的唯一区别就是看脸不连续。 正态分布 68的% 的数据会出现在1个sigma的宽度, macOS和linux 看cpu 的利用率 没经过压缩的视屏, 一个小小的1080p竟然有626G。 经过压缩了之后,竟然能够只有几个G。压缩办法有H。264 H.265 一个1080p是表示 1920*1080 的图像 一般来说 灰度图就只有一个channel 1M就是1024 * 1024 个byte Swap就是ram不够的时候我们就会swap ssd上的内存来凑数。 所以经常看到swap 就说明你的ram不够,性能下降了。因为… 我的Mac的core是14核心,threads也就是线程是28 。 因为每个core可运行多个线程, (超线程技术) 只要我们在mean和sum操作的时候没有碰哪一个维度,这个维度的shape就还在对吗。 我们只要对某一个维度进行了mean或者max或者sum的操作,都会cencel或者销掉这个维度,因为聚合了,我们进行了sum或者mean… Torch的mean 和avg 还有sum, 是可以指定axis的。 如果axis是0, 也就是沿着垂直方向走,一边走一边把路上遇到… Numpy的reshape和torch的view是一样的功能。 torch里面有个dataloader的, 他是iterable的。 所以当我for 他的时候,就会被每次返回data, label… Tensor和numpy里面的ndarray 唯一的区别就是他是支持在GPU上加速的。 中文就是张量。并且tensor可以帮我们自动… Torch 里面的tensor就是NDimentional的array 。 可以是1D, 2D, 3D 4D等等。 我们说的vector… Conda在安装的时候 ,如果我们不指定特定的verison 他就会帮我们自动安装最新的版本。 比如这个: conda install… 即使在torch的官网上我们看到了最新的torch版本是2。4.1 但是我们可能在macos 或者特定的python版本 的架构发布… Python3.10 是torch最稳定的版本。 所以我们要做什么,都要用python3.10 来做。 Nightly 如果记得enemy还想给玩家弄一个击退或者knock的效果,直接用player的tag check 然后对他player的rb进行… 我们想要伤害player 。 可以让他有health的class。这个class 专门有函数来takedamage。 然后我们的enemy… 玩家的成就感来自紧张,放松,成就 这样的 循环, 我们 成功的躲过了几轮攻击之后,敌人就会进入失误的状态给player反击的机会。… 游戏逻辑的精髓, 就是去判断什么时候该进入什么state的machine了。有时候丰富的设计, 烧脑的设计,会让游戏呈现不一样的level… 当我们要进行一些复杂的逻辑判断,switch case 写不清楚的时候,才会用到if: 一般我们对state machine进行切换的时候, 都会用switch cas而不是if。 因为switch case非常适合我们… Vector3 里面有三个分量, 也就是xyz。 每个都有正负之分的,就像是我的手串计数器一样。 为了完整的控制player的跳和降落,看起来更加自然。 两个步骤: 我的player的jump可以用到rb的engine, 让他收到重力落下,但是我deplayer的dash和superdash ,还有… Add force 会让enemy的移动的变得缓慢。 因为要积累速度, 如果要让她有很快的反应速度,必须要直接设置velocity… 我们直接设置敌人的 速度,能够很方便的实现瞬间测冲刺和一般的巡逻,非常的可控,grim 和tantis都是这样的。 一般的boss的行为都是非常精确可控的,所以大家才不用addforce去控制他们的行为,而是直接设置velocity。 Torch里面的数据,如果你需要标准花,首先你得告诉他,现在你的数据的mean和std是啥。 然后他才能根据我们的mean和std… Zscore就是原始数据转化成标准正态分布时候的分数/坐标。 我们可以说我们把数据标准化为z score, 我么就是在偷偷的说我们… Pdf 就是概率密度函数,就是用来求某个区间内的概率的。 主要是用积分。 Zscore的normalization可以把数据分散的很开的,弄成标准正态分布。 也就是mean是0, std 是1. 这样方便… 灰度图像和彩色图像的区别就是通道不一样,灰度图像只有1个channel。 但是彩色的有RGB三个channel。 所以灰度图像是2… Plt的imshow主要是用来展示图像的,他可以直接展示numpy的array的数据点。 二维图像。 Uint8 的范围是0-255, u就是表示正数。 我们在下载的二进制的文件ubyte之后,如果需要把他转化成numpy的array, 我们需要进行一些转化, 等我们有了numpyarray… 我们在下载torchtensor的时候是不会应用transform的,还是会用ubytes的, 只有在我们加载dataset的时候… Torchvison下载数据无论如何都会下载所有的train和test,只要指定了download 就会这样。 Ubyte 就是unsigned byte的意思。 也就是无符号 也就是正的0 到255, 以后看到unsign 就是正数。8位,每个… Torchvision 和torch ,torch就是专门用来搞dnn的框架,torchvision就是专门用来搞机器视觉的。 也… GPU和TPU是两种东西, TPU事google的东西,专门用来做优化了tensorflow的框架的执行, 框架就是一些已经build好的轮子。 Unity就是游戏开发框架。 中型项目的unity项目文件这么组织: 为什么 @jit 常用作修饰符,而 vmap 不常用: Jit和vmap是两种东西,jit帮你把你的函数转化成机器代码, 能够加速运算的。 Jax和numpy的stack,就是把axis的那一些数据抽出来,成为最后的那个维度, 看起来就是一行数据。 我看到你写了convolve 但是没写dot product 。 你怎么解释,是不是dotproduct组成了convolve。… Jax 的vmap可以对第一个matrix做循环,然后声明第二个可以是个vector。也就是表示对xs的第一个维度进行批处理,w就… 很多个差不多的数据, 如果要批量的进行同一个操作, 可以用jit的vmap, 他可以帮我把一个普通的函数,做成隐藏的for的形式,这样… Ipython想要监测时间就是一个百分号%然后timeit Ipython就会terminal里面的交互式的编程工具,有魔法命令 JIT可以帮我把低效率的代码转换成机器代码,编译速度更快。 serializedFiled 加上Private是常见的组合。是为了保持私有并且又允许在unity进行比那几。 Flink主要是做sql类似的事情,但是是用在实时的数据。 也就是realtime。 Apache flink就是用来处理和分析实时… 两种ML的模型可以直接帮我们在kinesis analytics直接用。必须记住 kinesis data analytics是吧kinesis 的stream的data和firehose的data 可以集合起来… S3 的bufferr 如果到达了指定大小,数据就会被传输 Hi Tatiana, Unity 里面的mathf 有clamp可以吧某个坐标控制在min和max的范围内, 如果超出了,就把它夹回去。 Xbox的手柄参考 Jax会帮你做一些矩阵的向量vector化:相当于你有10 行数据,然后150个neuron 100是你的feature。 你观察…
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我懂了! 我悟了! 我经常说y = ax+b 就是说a事constant, 我们要对x进行操作对吧。这里我的NN,其实就是吧weight… 我懂了! 我悟了! 我经常说y = ax+b 就是说a事constant, 我们要对x进行操作对吧。这里我的NN,其实就是吧weight当成x了! 这里的a说的其实是我们的数据input 。简单来说,权重就是网络学到的“系数”,而输入就是数据本身。最终,网络通过不断调整这些“系数”(权重和偏置)来拟合数据,从而做出预测。

🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Neuron就是最简单的linear layer和activation function组成的。 self.flatten = nn.Flatten() self.linear_relu_stack = nn.Sequential( nn.Linear(28*28, 512), nn.ReLU(), nn.Linear(512, 512), nn.ReLU(), nn.Linear(512, 10)
也就是这里包含两层neuron。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
概率密度函数 和概率质量函数的唯一区别就是看脸不连续。 一个是pdf, 一个是pmf 离散的分布 : 泊松分布和二项分布就是用pmf来薯片某些的p是多少
连续的分布: 正态分布和uniform distribution就是用pdf来计算p的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
正态分布 68的% 的数据会出现在1个sigma的宽度, 96%的会出现在2个sigma的宽度 99.7% 会出现在3个sigma的宽度
所以我们的数据 如果mean是0, sigma是1, 宽度一般会是3. 因为要把3个sigma的数据包含进去。 
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
macOS和linux 看cpu 的利用率

用activity monitor 双击cpu可以看每个threads的利用。 我们不用说worker多少,也可以直接调用。 满threads进行计算。
或者让brew 下载一个htop
linux 也可UI用htop看。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
没经过压缩的视屏, 一个小小的1080p竟然有626G。 经过压缩了之后,竟然能够只有几个G。压缩办法有H。264 H.265
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
一个1080p是表示 1920*1080 的图像 所以3个channel的话, 每个通道的像素是1个byte。 那么1920 * 1080 *3/1024/1024 = 5.933 MB
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
一般来说 灰度图就只有一个channel RGB 有三个channel RGBA有4个channel 一个像素就1 个byte。也就是8位,每一位是8个0或1. 但是3个channel的像素是3个byte。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
1M就是1024 * 1024 个byte 大约就是1百万。 1,000,000 1024个byte组成的是KB 不是MB 有个直观的感受60000个28 * 28 的图片才44MB 600002828/1024/1024 = 44.86144 MB
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Swap就是ram不够的时候我们就会swap ssd上的内存来凑数。 所以经常看到swap 就说明你的ram不够,性能下降了。因为… Swap就是ram不够的时候我们就会swap ssd上的内存来凑数。 所以经常看到swap 就说明你的ram不够,性能下降了。因为ssd比起ram 来说太慢了。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我的Mac的core是14核心,threads也就是线程是28 。 因为每个core可运行多个线程, (超线程技术)
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
只要我们在mean和sum操作的时候没有碰哪一个维度,这个维度的shape就还在对吗。 是的,在 PyTorch 中,如果你在 mean 和 sum 操作时没有指定某个维度,该维度的形状将保持不变。只有在指定维度上进行操作时,该维度才会被”折叠”,从而导致形状减少一维。 可以看这个例子:
for data, label in train_loader:
image = data.view(data.shape[0], data.shape[1], -1)
mean += image.mean(2).sum(0)
std += image.std(2).sum(0)
这个就是我们对dim1 进行了保留,也就是我们认为channel 也就是rgb这个channel的数据应该保留shape。 我们只是对0 batch和2data进行操作mean和sum。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我们只要对某一个维度进行了mean或者max或者sum的操作,都会cencel或者销掉这个维度,因为聚合了,我们进行了sum或者mean… 我们只要对某一个维度进行了mean或者max或者sum的操作,都会cencel或者销掉这个维度,因为聚合了,我们进行了sum或者mean的操作了。 很神奇。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Torch的mean 和avg 还有sum, 是可以指定axis的。 如果axis是0, 也就是沿着垂直方向走,一边走一边把路上遇到… Torch的mean 和avg 还有sum, 是可以指定axis的。 如果axis是0, 也就是沿着垂直方向走,一边走一边把路上遇到的value都存起来操作。 而不是让他抽出每一行, 这个概念容易混淆, 不好懂,需要常常强化。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Numpy的reshape和torch的view是一样的功能。 import torch import numpy as np
PyTorch
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]]) reshaped_tensor = tensor.view(3, 2) print(reshaped_tensor)
NumPy
array = np.array([[1, 2, 3], [4, 5, 6]]) reshaped_array = array.reshape(3, 2) print(reshaped_array)
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
torch里面有个dataloader的, 他是iterable的。 所以当我for 他的时候,就会被每次返回data, label… torch里面有个dataloader的, 他是iterable的。 所以当我for 他的时候,就会被每次返回data, label 。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Tensor和numpy里面的ndarray 唯一的区别就是他是支持在GPU上加速的。 中文就是张量。并且tensor可以帮我们自动… Tensor和numpy里面的ndarray 唯一的区别就是他是支持在GPU上加速的。 中文就是张量。并且tensor可以帮我们自动微分。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Torch 里面的tensor就是NDimentional的array 。 可以是1D, 2D, 3D 4D等等。 我们说的vector… Torch 里面的tensor就是NDimentional的array 。 可以是1D, 2D, 3D 4D等等。 我们说的vector是1D的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Conda在安装的时候 ,如果我们不指定特定的verison 他就会帮我们自动安装最新的版本。 比如这个: conda install… Conda在安装的时候 ,如果我们不指定特定的verison 他就会帮我们自动安装最新的版本。 比如这个: conda install pytorch torchvision torchaudio -c pytorch
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
即使在torch的官网上我们看到了最新的torch版本是2。4.1 但是我们可能在macos 或者特定的python版本 的架构发布… 即使在torch的官网上我们看到了最新的torch版本是2。4.1 但是我们可能在macos 或者特定的python版本 的架构发布。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Python3.10 是torch最稳定的版本。 所以我们要做什么,都要用python3.10 来做。 别上3.11, 太新了反而不稳定也不好。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Nightly 类似develper beta 有最新的功能,但是可能不够正式版本稳定。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
如果记得enemy还想给玩家弄一个击退或者knock的效果,直接用player的tag check 然后对他player的rb进行…
如果记得enemy还想给玩家弄一个击退或者knock的效果,直接用player的tag check 然后对他player的rb进行addforce。 这个很有意思, 击退力是这样的: 看看玩家是不是在我们的右边,然后击退。 Player 从哪边来的,就让他往哪边击退。
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag(“Player”))
{
// 获取玩家的Rigidbody
Rigidbody2D playerRb = collision.gameObject.GetComponent
if (playerRb != null)
{
// 向玩家施加一个击退力
Vector2 knockbackDirection = (playerRb.transform.position - transform.position).normalized;
playerRb.AddForce(knockbackDirection * knockbackForce, ForceMode2D.Impulse);
}
} }
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我们想要伤害player 。 可以让他有health的class。这个class 专门有函数来takedamage。 然后我们的enemy… 我们想要伤害player 。 可以让他有health的class。这个class 专门有函数来takedamage。 然后我们的enemy只需要调用GetComponent我们的playerHealth的class, 然后就可以调用她take damage的function了。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
玩家的成就感来自紧张,放松,成就 这样的 循环, 我们 成功的躲过了几轮攻击之后,敌人就会进入失误的状态给player反击的机会。… 玩家的成就感来自紧张,放松,成就 这样的 循环, 我们 成功的躲过了几轮攻击之后,敌人就会进入失误的状态给player反击的机会。 这是有节奏的战斗状态转换,。 最难的 就是让玩家参透我们enemy的攻击规律。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
游戏逻辑的精髓, 就是去判断什么时候该进入什么state的machine了。有时候丰富的设计, 烧脑的设计,会让游戏呈现不一样的level… 游戏逻辑的精髓, 就是去判断什么时候该进入什么state的machine了。有时候丰富的设计, 烧脑的设计,会让游戏呈现不一样的level 。 :。当玩家进入敌人的视野时,敌人开始追击;当敌人追击中撞到了墙,敌人进入卡住的状态。这
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
当我们要进行一些复杂的逻辑判断,switch case 写不清楚的时候,才会用到if: if (currentState == EnemyState.Idle && playerInSight) { currentState = EnemyState.Chasing; } else if (currentState == EnemyState.Chasing && hitWall) { currentState = EnemyState.Stuck; }
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
一般我们对state machine进行切换的时候, 都会用switch cas而不是if。 因为switch case非常适合我们… 一般我们对state machine进行切换的时候, 都会用switch cas而不是if。 因为switch case非常适合我们切换state mahcine的情况 而不是告诉if 一个特别复杂的表达式。 我们的额state machine 已经很明确了具体是要让enemy进去那一种状态。 最重要的是,switch case 会比if更快哦。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Vector3 里面有三个分量, 也就是xyz。 每个都有正负之分的,就像是我的手串计数器一样。 我们需要命令他向左还是向右,向前还是向后,向上还是向下。 所以一般来说我们可以单独有逻辑来控制正负, 还有逻辑单独控制value的大小。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
为了完整的控制player的跳和降落,看起来更加自然。 两个步骤:
- addforce 写在code里面
- 在hierarchy里面增加rb ,并且设置gravity是true
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我的player的jump可以用到rb的engine, 让他收到重力落下,但是我deplayer的dash和superdash ,还有… 我的player的jump可以用到rb的engine, 让他收到重力落下,但是我deplayer的dash和superdash ,还有敌人的巡逻,突然冲刺,这些都需要直接设置velocity? 如果想让他突然跳跃,还是要让他接受一个impluse ,也就是一个突然的并且瞬间的迸发的力。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Add force 会让enemy的移动的变得缓慢。 因为要积累速度, 如果要让她有很快的反应速度,必须要直接设置velocity… Add force 会让enemy的移动的变得缓慢。 因为要积累速度, 如果要让她有很快的反应速度,必须要直接设置velocity。 才能瞬间冲刺。 非常复杂的移动逻辑,就必须直接设置velocity。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我们直接设置敌人的 速度,能够很方便的实现瞬间测冲刺和一般的巡逻,非常的可控,grim 和tantis都是这样的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
一般的boss的行为都是非常精确可控的,所以大家才不用addforce去控制他们的行为,而是直接设置velocity。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Torch里面的数据,如果你需要标准花,首先你得告诉他,现在你的数据的mean和std是啥。 然后他才能根据我们的mean和std… Torch里面的数据,如果你需要标准花,首先你得告诉他,现在你的数据的mean和std是啥。 然后他才能根据我们的mean和std进行标准化。 也就是减去mean 再去除std。 这样就可以算出来mean是0, std是1的数据分布了。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Zscore就是原始数据转化成标准正态分布时候的分数/坐标。 我们可以说我们把数据标准化为z score, 我么就是在偷偷的说我们… Zscore就是原始数据转化成标准正态分布时候的分数/坐标。 我们可以说我们把数据标准化为z score, 我么就是在偷偷的说我们让他们的mean和std 变成了0 和1. 不是说这个数据的分布是标准正态分布的, 但是他能和标准正态分布相比较的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Pdf 就是概率密度函数,就是用来求某个区间内的概率的。 主要是用积分。 
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Zscore的normalization可以把数据分散的很开的,弄成标准正态分布。 也就是mean是0, std 是1. 这样方便… Zscore的normalization可以把数据分散的很开的,弄成标准正态分布。 也就是mean是0, std 是1. 这样方便比较,还可以避免梯度爆炸或梯度下降的问题。
- 标准化(Z-score normalization)在概率论中的意义
在概率论和统计学中,标准化的过程是将一个随机变量从任意分布转换为标准正态分布,标准正态分布是均值为 0、标准差为 1 的正态分布。
标准化的公式如下:
z = \frac{x - \mu}{\sigma}
其中:
• x 是原始数据(随机变量的取值)。
• \mu 是数据的均值。
• \sigma 是数据的标准差。
• z 是标准化后的值,表示原始数据点在标准正态分布中对应的位置(Z-score)。
这个公式在统计学中的作用是将任何具有均值 \mu 和标准差 \sigma 的数据分布,转换为均值为 0,标准差为 1 的标准正态分布。这种转换不会改变数据的形状,但会改变数据的范围和尺度。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
灰度图像和彩色图像的区别就是通道不一样,灰度图像只有1个channel。 但是彩色的有RGB三个channel。 所以灰度图像是2… 灰度图像和彩色图像的区别就是通道不一样,灰度图像只有1个channel。 但是彩色的有RGB三个channel。 所以灰度图像是2D。 彩色的是3D的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Plt的imshow主要是用来展示图像的,他可以直接展示numpy的array的数据点。 二维图像。 Plt的plot就是用来画出数据点的关系的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Uint8 的范围是0-255, u就是表示正数。 Int8 就是有正又有负, -128到127 Int是范围: -2,147,483,648 到 2,147,483,647。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我们在下载的二进制的文件ubyte之后,如果需要把他转化成numpy的array, 我们需要进行一些转化, 等我们有了numpyarray… 我们在下载的二进制的文件ubyte之后,如果需要把他转化成numpy的array, 我们需要进行一些转化, 等我们有了numpyarray之后,就可以去torch 里面把他弄沉后torch 的tensor 这样torch才能处理他。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我们在下载torchtensor的时候是不会应用transform的,还是会用ubytes的, 只有在我们加载dataset的时候… 我们在下载torchtensor的时候是不会应用transform的,还是会用ubytes的, 只有在我们加载dataset的时候, 才会用我们的transform来做。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Torchvison下载数据无论如何都会下载所有的train和test,只要指定了download 就会这样。 from torchvision.datasets import MNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader
定义数据转换操作
transform = transforms.Compose([ transforms.ToTensor(), # 将图像转换为张量 transforms.Normalize((0.5,), (0.5,)) # 标准化到 [-1, 1] 区间 ])
加载训练集
mnist_trainset = MNIST( root=’./data’, # 指定存储 MNIST 数据集的根目录 train=True, # 如果 True,加载训练集;如果 False,加载测试集 download=True, # 如果数据集不存在,下载它 transform=transform # 应用数据转换操作 )
加载测试集
mnist_testset = MNIST( root=’./data’, # 同样指定存储路径 train=False, # 如果 True,加载训练集;如果 False,加载测试集 download=True, # 下载测试集 transform=transform # 应用转换操作 )
哦 你的意思是我们这一行代码其实有很多逻辑,不管怎么养 只要我们说了download是true,name他就会download train test 对吧。 如果检测到了已经有了数据了。他就会帮我们跨过下载,然后我们指定要access哪一个train活着test 然后他来帮我们从dir里面调用
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Ubyte 就是unsigned byte的意思。 也就是无符号 也就是正的0 到255, 以后看到unsign 就是正数。8位,每个… Ubyte 就是unsigned byte的意思。 也就是无符号 也就是正的0 到255, 以后看到unsign 就是正数。8位,每个位置都是0 /1
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Torchvision 和torch ,torch就是专门用来搞dnn的框架,torchvision就是专门用来搞机器视觉的。 也… Torchvision 和torch ,torch就是专门用来搞dnn的框架,torchvision就是专门用来搞机器视觉的。 也就是torchvision是类似opencv。 Torch是用来构建和训练NN的,有nn module还有autograd。 Torchvision是一个额外的torch专门用来出来视觉的library,主要是帮我们提供一些基础的dataset的, cifar, imagenet,还有一些pretained model 比如说resnet和vgg。还有图像的转换和处理工具。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
GPU和TPU是两种东西, TPU事google的东西,专门用来做优化了tensorflow的框架的执行, 用来做CNN 和RNN的。 GPU主要就是Nvidia系列的产品了,Geforce等等
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
框架就是一些已经build好的轮子。 Unity就是游戏开发框架。 unrealengine也是。 web开发框架Django就是用python写的框架。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
中型项目的unity项目文件这么组织: Assets │ ├── Scenes │ ├── MainMenu.unity │ └── Level1.unity │ ├── Prefabs │ ├── Player.prefab │ └── Enemy.prefab │ ├── Scripts │ ├── Player │ │ ├── PlayerMovement.cs │ │ ├── PlayerHealth.cs │ │ └── PlayerSave.cs │ ├── Enemies │ │ ├── EnemyAI.cs │ │ └── EnemyHealth.cs │ ├── UI │ │ ├── HealthBar.cs │ │ └── MainMenuController.cs │ ├── Managers │ │ ├── GameManager.cs │ │ ├── AudioManager.cs │ │ └── SceneTransitionManager.cs │ └── Data │ ├── SaveSystem.cs │ └── PlayerPrefsManager.cs │ ├── Materials │ └── PlayerMaterial.mat │ ├── Textures │ └── PlayerTexture.png │ └── Audio └── BackgroundMusic.mp3
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
为什么 @jit 常用作修饰符,而 vmap 不常用: • @jit:jit 的主要作用是加速代码的执行,它不会改变函数的行为。因此,可以很方便地通过修饰符将其应用到函数上。 python Copy code @jax.jit • def my_function(x): • return jnp.sin(x) + jnp.cos(x) 一般来说这么用就可以了: • batched_and_jitted_function = jax.jit(jax.vmap(simple_function)) •
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Jit和vmap是两种东西,jit帮你把你的函数转化成机器代码, 能够加速运算的。 Vmap是自动隐藏的for循环,能够把不是vector的东西vector,加速批处理。 他俩一起用就是这样的:
定义一个简单的函数
def simple_function(x): return jnp.sin(x) + jnp.cos(x)
使用 vmap 和 jit 结合
vmap_jitted_function = jax.jit(jax.vmap(simple_function))
批量输入
x_batch = jnp.array([1.0, 2.0, 3.0])
执行批量计算并加速
result = vmap_jitted_function(x_batch)
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Jax和numpy的stack,就是把axis的那一些数据抽出来,成为最后的那个维度, 看起来就是一行数据。 有点像是抽牌, 然后把新的牌stack成一个group的维度。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
我看到你写了convolve 但是没写dot product 。 你怎么解释,是不是dotproduct组成了convolve。… 我看到你写了convolve 但是没写dot product 。 你怎么解释,是不是dotproduct组成了convolve。 是真的,convolution的关键步骤就死dot product。 或者可以吧convolve理解成sliding 的window的dot product。 也就是滑动着求doptproduct,并且最后最成array得形式返回。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Jax 的vmap可以对第一个matrix做循环,然后声明第二个可以是个vector。也就是表示对xs的第一个维度进行批处理,w就… Jax 的vmap可以对第一个matrix做循环,然后声明第二个可以是个vector。也就是表示对xs的第一个维度进行批处理,w就是一个vector。 None就是说不要让vmap处理w。 用法是这样的:
# 使用 vmap 对 x 进行批处理,而 w 保持不变 batched_convolve = jax.vmap(convolve, in_axes=(0, None))
批量计算
batched_convolve(xs, w) # 输出:[2.0, 4.7]
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
很多个差不多的数据, 如果要批量的进行同一个操作, 可以用jit的vmap, 他可以帮我把一个普通的函数,做成隐藏的for的形式,这样… 很多个差不多的数据, 如果要批量的进行同一个操作, 可以用jit的vmap, 他可以帮我把一个普通的函数,做成隐藏的for的形式,这样就可以批量的处理vector了。 这有一个例子: import jax import jax.numpy as jnp
def dot_product(x, y): return jnp.dot(x, y)
x = jnp.array([1.0, 2.0, 3.0]) y = jnp.array([4.0, 5.0, 6.0]) dot_product(x, y)
xs = jnp.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) ys = jnp.array([[7.0, 8.0, 9.0], [10.0, 11.0, 12.0]])
def batch_dot(xs, ys): output = [] for i in range(len(xs)):
output.append(dot_product(xs[i], ys[i]))
return jnp.array(output) %timeit batch_dot(xs, ys)
#bacth dot with vmap batch_dot_vmap = jax.vmap(dot_product) %timeit batch_dot_vmap(xs, ys)
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Ipython想要监测时间就是一个百分号%然后timeit %timeit %%timeit 是监测整个block的执行时间
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Ipython就会terminal里面的交互式的编程工具,有魔法命令
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
JIT可以帮我把低效率的代码转换成机器代码,编译速度更快。 使用方法是:jax.jit
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
serializedFiled 加上Private是常见的组合。是为了保持私有并且又允许在unity进行比那几。 如果想要改变某个class的private的value。 那么这个class一般会哦提供public的方法让你来改变。 这种方法就是API 是最简单的API。 也就是不需要访问原来的class的内部实现细节,就可以跟那个class进行交互。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Flink主要是做sql类似的事情,但是是用在实时的数据。 也就是realtime。 Apache flink就是用来处理和分析实时… Flink主要是做sql类似的事情,但是是用在实时的数据。 也就是realtime。 Apache flink就是用来处理和分析实时数据stream的。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
两种ML的模型可以直接帮我们在kinesis analytics直接用。必须记住
- random cut forest,来来检测不在数据中心的abnormal的。只能用在recent history哦 这是要考的
- Hotspots (用来找到数据集中的dense area)也就是聚类分析和模式识别
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
kinesis data analytics是吧kinesis 的stream的data和firehose的data 可以集合起来… kinesis data analytics是吧kinesis 的stream的data和firehose的data 可以集合起来,还有s3的data, 用sql来进行实时数据和历史数据的join table得分析。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
S3 的bufferr 如果到达了指定大小,数据就会被传输 如果设定了buffer interval 即使没有到buffer size ,到了指定的interval 也会被传递。
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Hi Tatiana, I wanted to clarify a few points that I may not have communicated clearly in my previous email, and I apologize for any confusion this may have caused. I have successfully obtained my CAQ, which is valid from August 12, 2024, to November 30, 2025. Additionally, I submitted my study permit application on August 15, 2024, two weeks before my previous study permit is set to expire on August 31, 2024. I noticed that the CAQ and study permit information I provided to the university had not been updated, which may have led to some misunderstanding. I sincerely apologize for this oversight. Please find the updated CAQ attached to this email. However, I am concerned that my study permit might not be processed in time for September 15, 2024. Given the delays I encountered during the CAQ application process—particularly due to the more stringent financial scrutiny this year, which required me to reapply twice—I’m worried that this could impact the timing of my study permit approval. I would greatly appreciate your advice on whether there is any possibility to extend my study permit deadline, considering these circumstances. Thank you very much for your understanding and support!
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Unity 里面的mathf 有clamp可以吧某个坐标控制在min和max的范围内, 如果超出了,就把它夹回去。 transform.position = new Vector3(Mathf.Clamp(transform.position.x, -xBoundary, xBoundary), transform.position.y, 0);
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Xbox的手柄参考 A 按钮: joystick button 0 jumo B 按钮: joystick button 1 Back Y 按钮: joystick button 4 DreamNail X 按钮: joystick button 3 Attack RB : button 7 LB: 6
左摇杆 X 轴: Horizontal 左摇杆 Y 轴: Vertical 左肩键: joystick button 4 右肩键: joystick button 5 左边按下:13 右边按下:14
🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️下一個筆記🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️🐿️
Jax会帮你做一些矩阵的向量vector化:相当于你有10 行数据,然后150个neuron 100是你的feature。 你观察… Jax会帮你做一些矩阵的向量vector化:相当于你有10 行数据,然后150个neuron 100是你的feature。 你观察他的vmap,他就很直观,rangneuron吃掉batched_x 然后就是每个batch对应的neuron的输出了。 如果想要rational, 可以说, 他把apply matric向量化了,也就是让他可以处理batched 的数据,本来是只有一个维度的数据,现在可以处理多维度。
mat = random.normal(key1, (150, 100)) batched_x = random.normal(key2, (10, 100))
def apply_matrix(x): return jnp.dot(mat, x)
@jit def vmap_batched_apply_matrix(batched_x): vmap(apply_matrix)(batched_x).shape
#匯總今日內容