哪些语言能使用PyTorch
[PyTorch](
Python
Python是PyTorch的主要开发语言。使用Python,您可以轻松地构建、训练和部署深度学习模型。以下是一个使用PyTorch进行线性回归的简单示例代码:
import torch
# 创建训练数据
x = torch.tensor([[1], [2], [3], [4]], dtype=torch.float32)
y = torch.tensor([[2], [4], [6], [8]], dtype=torch.float32)
# 定义模型
model = torch.nn.Linear(1, 1)
# 定义损失函数和优化器
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 训练模型
for epoch in range(100):
y_pred = model(x)
loss = criterion(y_pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 预测新数据
x_new = torch.tensor([[5]], dtype=torch.float32)
y_new = model(x_new)
print(y_new)
C++
PyTorch提供了C++接口,使开发者可以在C++中使用PyTorch功能。以下是一个使用PyTorch C++ API进行线性回归的简单示例代码:
#include <torch/torch.h>
int main() {
// 创建训练数据
torch::Tensor x = torch::tensor({{1}, {2}, {3}, {4}}, torch::kFloat32);
torch::Tensor y = torch::tensor({{2}, {4}, {6}, {8}}, torch::kFloat32);
// 定义模型
torch::nn::Linear model(1, 1);
// 定义损失函数和优化器
torch::nn::MSELoss criterion;
torch::optim::SGD optimizer(model.parameters(), 0.01);
// 训练模型
for (int epoch = 0; epoch < 100; epoch++) {
torch::Tensor y_pred = model.forward(x);
torch::Tensor loss = criterion.forward(y_pred, y);
optimizer.zero_grad();
loss.backward();
optimizer.step();
}
// 预测新数据
torch::Tensor x_new = torch::tensor({{5}}, torch::kFloat32);
torch::Tensor y_new = model.forward(x_new);
std::cout << y_new << std::endl;
return 0;
}
Java
通过[Java的深度学习库](
import org.nd4j.linalg.factory.Nd4j;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.deeplearning4j.optimize.listeners.ScoreIterationListener;
import org.nd4j.linalg.lossfunctions.LossFunctions;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import org.nd4j.linalg.dataset.DataSet;
import org.nd4j.linalg.factory.Nd4jBackend;
public class LinearRegression {
public static void main(String[] args) {
// 创建训练数据
INDArray x = Nd4j.create(new float[]{1, 2, 3, 4}, new int[]{4, 1});
INDArray y = Nd4j.create(new float[]{2, 4, 6, 8}, new int[]{4, 1});
// 定义模型
NeuralNetConfiguration.Builder config = new NeuralNetConfiguration.Builder();
config.weightInit(WeightInit.XAVIER);
config.updater(new Adam(0.01));
config.list()
.layer(0, new DenseLayer.Builder().nIn(1).nOut(1).activation(Activation.IDENTITY).build());
MultiLayerNetwork model = new MultiLayerNetwork(config.build());
model.init();
model.setListeners(new ScoreIterationListener(100));
// 创建训练数据集
DataSet dataSet = new DataSet(x, y);
DataSetIterator iterator