简单概括,就是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 plt
def 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
的采样情况