def load_dataset(seq_len,batch_size=32): note_arr = np.load("notes_array.npy") _n_notes, _n_durations = note_arr.shape[1:] offset_arr = np.load("offsets_array.npy") _n_offsets = offset_arr.shape[1] note_arr = np.reshape(note_arr, (note_arr.shape[0], -1)) note_data = np.concatenate([note_arr, offset_arr], axis=-1) _n_embeddings = note_data.shape[-1]
时间: 2024-03-26 21:37:54 浏览: 64
这段代码定义了一个名为load_dataset()的函数,用来加载音符和节奏序列数据集。它首先从文件中加载note_arr、offset_arr数组,这两个数组分别表示音符和节奏序列的二维矩阵形式。然后,通过np.concatenate()函数将这两个数组按列合并成一个新的数组note_data,其中每个元素都表示一个音符或节奏的特征向量。接着,通过np.reshape()函数将note_arr数组转换成二维矩阵形式,方便后续处理。最后,该函数返回了经过预处理和划分后的数据集dataset,以及音符、节奏和偏移量的个数n_notes、n_durations和n_offsets,以及嵌入向量的维度n_embeddings。
相关问题
seq_len = 64 hidden_size = 384 dataset,n_embeddings,n_notes,n_durations,n_offsets = load_dataset(seq_len,batch_size=128)
在这段代码中,seq_len表示生成器模型中,输入序列的长度,即SEQ_LENGTH。hidden_size表示生成器模型中,LSTM模型的隐藏层大小。dataset是使用load_dataset()函数加载的数据集,其中包含了用于训练和验证生成器模型的音符和节奏序列数据。n_embeddings、n_notes、n_durations和n_offsets分别表示数据集中不同元素的个数,即嵌入向量的维度、音符类型的个数、节奏类型的个数和偏移量的个数。在load_dataset()函数中,这些参数被用于对数据集进行预处理和划分,以便用于模型的训练和验证。
def load_data(file_name): df = pd.read_csv('data/new_data/' + file_name, encoding='gbk') columns = df.columns df.fillna(df.mean(), inplace=True) return df class MyDataset(Dataset): def __init__(self, data): self.data = data def __getitem__(self, item): return self.data[item] def __len__(self): return len(self.data) def nn_seq_us(B): print('data processing...') dataset = load_data() # split train = dataset[:int(len(dataset) * 0.6)] val = dataset[int(len(dataset) * 0.6):int(len(dataset) * 0.8)] test = dataset[int(len(dataset) * 0.8):len(dataset)] m, n = np.max(train[train.columns[1]]), np.min(train[train.columns[1]]) def process(data, batch_size): load = data[data.columns[1]] load = load.tolist() data = data.values.tolist() load = (load - n) / (m - n) seq = [] for i in range(len(data) - 24): train_seq = [] train_label = [] for j in range(i, i + 24): x = [load[j]] train_seq.append(x) # for c in range(2, 8): # train_seq.append(data[i + 24][c]) train_label.append(load[i + 24]) train_seq = torch.FloatTensor(train_seq) train_label = torch.FloatTensor(train_label).view(-1) seq.append((train_seq, train_label)) # print(seq[-1]) seq = MyDataset(seq) seq = DataLoader(dataset=seq, batch_size=batch_size, shuffle=False, num_workers=0, drop_last=True) return seq Dtr = process(train, B) Val = process(val, B) Dte = process(test, B) return Dtr, Val, Dte, m, n这是关于什么的代码
这是一个关于神经网络序列预测的代码,它将数据集加载并进行预处理,然后将其分为训练、验证和测试集。代码中的 load_data 函数用于加载数据文件,MyDataset 类用于创建数据集对象,nn_seq_us 函数则用于对数据进行预处理并将其转换为 PyTorch 数据加载器对象。最后,该函数返回训练、验证和测试数据集对象,以及数据的最大值和最小值。
阅读全文