处理数据集【使用词汇新式】
torch.device()
以下两种方式为一个意思,经常我们会看见第一种同第二种
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
if torch.cuda.is_available():
device = torch.device("cuda")
else:
device = torch.device("cpu")
这个device的用处是作为Tensor或者Model被分配到的位置。
这个地方的cuda:0 实际上并不是0号GPU,他取决于CUDA_VISIBLE_DEVICES
然后逻辑GPU和物理GPU有一个对应关系
如果CUDA_VISIBLE_DEVICES为2,1,3
那么CUDA:0就是2号GPU, CUDA:1 就是1号GPU CUDA:3 就是3号GPU
return torch.device('cuda:0' if cuda else 'cpu')
torch.device
代表将torch.Tensor分配到的设备的对象。torch.device包含一个设备类型(‘cpu’或‘cuda’)和可选的设备序号。如果设备序号不存在,则为当前设备。
n_hidden
————# number of hidden units in one cell【一个单元格中的隐藏单元数】
append()
方法向列表末尾追加元素。
','.join('abc')“
将字符串abc中的每个成员以字符’,'分隔开再拼接成一个字符串”,输出结果为:‘a,b,c’
vocab = list(set(" ".join(sentences).split()))
word2idx = {
w: i for i, w in enumerate(vocab)}
vocab_size = len(word2idx)
##
def make_data(sentences):
inputs = []
for sen in sentences:
inputs.append(np.asarray([word2idx[n] for n in sen.split()]))
targets = []
for out in labels:
targets.append(out) # To using Torch Softmax Loss function
return torch.LongTensor(inputs), torch.LongTensor(targets)
inputs, targets = make_data(sentences)
dataset = Data.TensorDataset(inputs, targets)
loader = Data.DataLoader(dataset, batch_size, True)
介绍长短期记忆网络
转载:https://blog.csdn.net/zhengxqq27/article/details/90481590
递归神经网络的结果与传统神经网络有一些不同,它带有一个指向自身的环,用来表示它可以传递当前时刻处理的信息给下一时刻使用。
所有的递归神经网络都是由重复神经网络模块构成的一条链,可以看到它的处理层非常简单,通常是一个单tanh层,通过当前输入及上一时刻的输出来得到当前输出。与神经网络相比,经过简单地改造,它已经可以利用上一时刻学习到的信息进行当前时刻的学习了。
LSTM的结构与上面相似,不同的是它的重复模块会比较复杂一点,它有四层结构: