PyTorch中神经网络的训练
torchtuples的Python项目详细描述
扭偶
torchtuples是一个用于训练PyTorch模型的小python包。
它同样适用于numpy arrays
和torch tensors
。
torchtuples的主要优点之一是它以嵌套元组的形式处理数据(请参见example below)。在
安装
torchtuples依赖于应该从HERE安装的PyTorch。在
接下来,torchtuples可以与pip一起安装:
pip install torchtuples
对于最新版本,直接从github安装(考虑添加--force-reinstall
):
或者通过克隆回购:
git clone https://github.com/havakv/torchtuples.git
cd torchtuples
python setup.py install
示例
importtorchfromtorchimportnnfromtorchtuplesimportModel,optim
用三组协变量x0
、x1
和{x
中构造。在
n=500x0,x1,x2=[torch.randn(n,3)for_inrange(3)]y=torch.randn(n,1)x=(x0,(x0,x1,x2))
创建一个简单的ReLU网络,将张量x_tensor
和元组x_tuple
作为输入。请注意,x_tuple
可以是任意长度。x_tuple
中的张量通过一层lin_tuple
,取平均值,并与x_tensor
相连。
然后我们通过层lin_cat
传递新的张量。在
classNet(nn.Module):def__init__(self):super().__init__()self.lin_tuple=nn.Linear(3,2)self.lin_cat=nn.Linear(5,1)self.relu=nn.ReLU()defforward(self,x_tensor,x_tuple):x=[self.relu(self.lin_tuple(xi))forxiinx_tuple]x=torch.stack(x).mean(0)x=torch.cat([x,x_tensor],dim=1)returnself.lin_cat(x)defpredict(self,x_tensor,x_tuple):x=self.forward(x_tensor,x_tuple)returntorch.sigmoid(x)
我们现在可以用
model=Model(Net(),nn.MSELoss(),optim.SGD(0.01))log=model.fit(x,y,batch_size=64,epochs=5)
并使用Net.predict
方法进行预测
preds=model.predict(x)
或者使用Net.forward
方法
preds=model.predict_net(x)
有关更多示例,请参见examples folder。在
- 项目
标签: