简单概括,就是t越大,采样得到的点越分散,采样得到的点范围更广
一个简单的示例函数
def time_embedding(t, max_steps=1000):frequency = np.linspace(0, 1, max_steps)embeddings = np.concatenate([np.sin(frequency * t * math.pi),np.cos(frequency * t * math.pi)])return embeddings
不同的时间步t
影响的是采样的范围,时间步t
越大,采样的周期越广泛,最后得到的采样的情况不同
一个简单的实例函数如下
import numpy as np
import matplotlib.pyplot as pltdef draw_sample(test_t):'''t为采样时间步'''# 设置最大的时间步数max_steps = 1000# 生成不同的时间步t的值# t_values = [10, 50, 100] # 示例时间步,您可以根据需要修改这些值t_values = [test_t]# 生成频率序列frequency = np.linspace(0, 1, max_steps)# 创建图像plt.figure(figsize=(14, 7))# 画出正弦和余弦函数的图像x_values = np.linspace(-2 * 10 * np.pi , 2 * 10 * np.pi , 100000)plt.plot(x_values, np.sin(x_values), label='sin(x)')plt.plot(x_values, np.cos(x_values), label='cos(x)')# 为每个时间步t描绘数据点for t in t_values:# 计算当前t的正弦和余弦值sin_values = np.sin(frequency * t * np.pi)cos_values = np.cos(frequency * t * np.pi)# 生成横坐标x_coords = frequency * t * np.pi# 在正弦图像上描点plt.scatter(x_coords, sin_values, label=f'sin points for t={t}')# 在余弦图像上描点plt.scatter(x_coords, cos_values, label=f'cos points for t={t}')# 显示图例plt.legend()# 显示图像plt.show()
draw_sample(1)
draw_sample(5)
draw_sample(20)
draw_sample(100)
t=1
的采样情况
t=5
的采样情况
t=20
的采样情况