tensorflow pytorch使用总结

tensorflow & pytorch对比

以建立一个普通神经网络结构为例。

参考文献:
mofan tensorflow.
mofan pytorch.

tensorflow

首先导入tensorflow和numpy:

import tensorflow as tf
import numpy as np

建立一个神经网络

def add_layer(inputs,in_size,out_size,activation_function=None):
    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
    if activation_function==None:
        outputs =tf.matmul(inputs, Weights) + biases
    else:
        Wx_plus_b = tf.matmul(inputs, Weights) + biases
        outputs = activation_function(Wx_plus_b)
    return outputs

建立数据集

x_data = np.linspace(-2,2,100, dtype=np.float32)[:, np.newaxis]
noise = np.random.normal(0, 0.01, x_data.shape).astype(np.float32)
y_data = np.square(x_data) - 0.2 + noise

xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1])
#------------搭建模型----------------------
l1 = add_layer(xs, 1, 20, activation_function=tf.nn.relu)
prediction = add_layer(l1, 20, 1, activation_function=None)

计算误差

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
                     reduction_indices=[1]))

传播误差

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

训练网络

init = tf.global_variables_initializer()  # 替换成这样就好

sess = tf.Session()
sess.run(init)
for i in range(1000):
    # training
    sess.run(train_step, feed_dict={xs: x_data, ys: y_data})

    if i % 50 == 0:
        # to see the step improvement
        print(i,sess.run(loss, feed_dict={xs: x_data, ys: y_data}))

训练结果
在这里插入图片描述

pytorch

首先导入pytorch:

x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1)
y = x.pow(2) - 0.2*torch.rand(x.size())

建立数据集

class Net(torch.nn.Module):  # 继承 torch 的 Module
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()     # 继承 __init__ 功能
        # 定义每层用什么样的形式
        self.hidden = torch.nn.Linear(n_feature, n_hidden)   # 隐藏层线性输出
        self.predict = torch.nn.Linear(n_hidden, n_output)   # 输出层线性输出

    def forward(self, x):   # 这同时也是 Module 中的 forward 功能
        # 正向传播输入值, 神经网络分析出输出值
        x = F.relu(self.hidden(x))      # 激励函数(隐藏层的线性值)
        x = self.predict(x)             # 输出值
        return x

net = Net(n_feature=1, n_hidden=20, n_output=1)

训练网络

optimizer = torch.optim.SGD(net.parameters(), lr=0.1)  # 传入 net 的所有参数, 学习率
loss_func = torch.nn.MSELoss()      # 预测值和真实值的误差计算公式 (均方差)

for t in range(1000):
    prediction = net(x)     # 喂给 net 训练数据 x, 输出预测值

    loss = loss_func(prediction, y)     # 计算两者的误差
    if t%50 == 0:
        print(t,loss.detach().numpy())

    optimizer.zero_grad()   
    loss.backward()        
    optimizer.step()        

训练结果
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,TensorFlowPyTorch可以共存并在同一项目中使用。虽然它们是两个不同的深度学习框架,但它们都提供了强大的功能和丰富的生态系统。 如果你想同时使用TensorFlowPyTorch,你可以根据需要在不同的部分使用它们。例如,你可以使用TensorFlow构建一个模型,并使用PyTorch进行训练和推理。这种混合使用的方式可以根据你的需求和喜好进行灵活选择。 要在同一项目中使用TensorFlowPyTorch,你需要确保正确安装和配置了两个框架。可以使用pip或conda来安装它们,并按照各自框架的文档进行设置和配置。 在代码中,你需要根据需要导入和使用TensorFlowPyTorch的库和函数。例如,对于TensorFlow,你可以使用`import tensorflow as tf`进行导入,并使用`tf.xxx`的方式调用TensorFlow的函数和类。对于PyTorch,你可以使用`import torch`进行导入,并使用`torch.xxx`的方式调用PyTorch的函数和类。 需要注意的是,由于TensorFlowPyTorch是两个不同的框架,它们的语法和API可能有所不同。在使用时,你需要根据具体框架的文档和示例进行学习和开发。同时,确保你理解每个框架的特性和工作原理,以便正确地使用它们。 总结起来,TensorFlowPyTorch可以在同一项目中共存,你可以根据需要使用它们的功能和特性。这种灵活性使你能够更好地利用两个框架的优势来开发深度学习应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值