当前位置: 首页 > news >正文

移动网站开发技术建设网页

移动网站开发技术,建设网页,河北华宇建设集团有限公司网站,软件最全的应用商店文章目录 一、TensorFlow(一)导入必要的库(二)加载MNIST数据集(三)数据预处理(四)构建神经网络模型(五)编译模型(六)训练模型&#xf…

文章目录

  • 一、TensorFlow
    • (一)导入必要的库
    • (二)加载MNIST数据集
    • (三)数据预处理
    • (四)构建神经网络模型
    • (五)编译模型
    • (六)训练模型
    • (七)评估模型
    • (八)将模型的输出转化为概率
    • (九)预测测试集的前5个样本
  • 二、PyTorch
    • (一)导入必要的库
    • (二)定义神经网络模型
    • (三)数据预处理和加载
    • (四)初始化模型、损失函数和优化器
    • (五)训练模型
    • (六)评估模型
    • (七)设置设备为GPU或CPU
    • (八)运行训练和评估
    • (九)预测测试集的前5个样本
  • 三、TensorFlow和PyTorch代码逻辑上的对比
    • (一)模型定义
    • (二)数据处理
    • (三)训练过程
    • (四)自动求导
  • 四、TensorFlow和PyTorch的应用
  • 五、动态图计算
    • (一)TensorFlow(静态图计算):
    • (二)PyTorch(动态图计算):

一、TensorFlow

使用TensorFlow构建一个简单的神经网络来对MNIST数据集进行分类

(一)导入必要的库

import tensorflow as tf
from tensorflow.keras import layers, models
import numpy as np

(二)加载MNIST数据集

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

(三)数据预处理

将图像数据归一化到[0, 1]范围,以提高模型的训练效果

x_train, x_test = x_train / 255.0, x_test / 255.0

(四)构建神经网络模型

  • Flatten层:将输入的28x28像素图像展平成784个特征的一维向量。
  • Dense层:全连接层,包含128个神经元,使用ReLU激活函数。
  • Dropout层:在训练过程中随机丢弃20%的神经元,防止过拟合。
  • 输出层:包含10个神经元,对应10个类别(数字0-9)。
model = models.Sequential([layers.Flatten(input_shape=(28, 28)),layers.Dense(128, activation='relu'),layers.Dropout(0.2),layers.Dense(10)
])

(五)编译模型

  • optimizer=‘adam’:使用Adam优化器。
  • loss=‘SparseCategoricalCrossentropy’:使用交叉熵损失函数。
  • metrics=[‘accuracy’]:使用准确率作为评估指标。
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])

(六)训练模型

model.fit(x_train, y_train, epochs=5)

(七)评估模型

model.evaluate(x_test, y_test, verbose=2)

(八)将模型的输出转化为概率

probability_model = tf.keras.Sequential([model,tf.keras.layers.Softmax()
])

(九)预测测试集的前5个样本

predictions = probability_model.predict(x_test[:5])
print(predictions)

二、PyTorch

使用PyTorch来构建、训练和评估一个用于MNIST数据集的神经网络模型

(一)导入必要的库

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader

(二)定义神经网络模型

class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.flatten = nn.Flatten()self.fc1 = nn.Linear(28 * 28, 128)self.dropout = nn.Dropout(0.2)self.fc2 = nn.Linear(128, 10)def forward(self, x):x = self.flatten(x)x = F.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return x

(三)数据预处理和加载

transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))
])train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=1000, shuffle=False)

(四)初始化模型、损失函数和优化器

model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())

(五)训练模型

def train(model, device, train_loader, optimizer, epoch):model.train()for batch_idx, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()if batch_idx % 100 == 0:print(f'Train Epoch: {epoch} [{batch_idx * len(data)}/{len(train_loader.dataset)} 'f'({100. * batch_idx / len(train_loader):.0f}%)]\tLoss: {loss.item():.6f}')

(六)评估模型

def test(model, device, test_loader):model.eval()test_loss = 0correct = 0with torch.no_grad():for data, target in test_loader:data, target = data.to(device), target.to(device)output = model(data)test_loss += criterion(output, target).item()pred = output.argmax(dim=1, keepdim=True)correct += pred.eq(target.view_as(pred)).sum().item()test_loss /= len(test_loader.dataset)accuracy = 100. * correct / len(test_loader.dataset)print(f'\nTest set: Average loss: {test_loss:.4f}, Accuracy: {correct}/{len(test_loader.dataset)} 'f'({accuracy:.0f}%)\n')

(七)设置设备为GPU或CPU

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

(八)运行训练和评估

for epoch in range(1, 6):train(model, device, train_loader, optimizer, epoch)test(model, device, test_loader)

(九)预测测试集的前5个样本

model.eval()
with torch.no_grad():samples = next(iter(test_loader))[0][:5].to(device)output = model(samples)predictions = F.softmax(output, dim=1)print(predictions)

三、TensorFlow和PyTorch代码逻辑上的对比

(一)模型定义

  • 在TensorFlow中,通常使用tf.keras模块来定义模型。可以使用Sequential API或Functional API。
import tensorflow as tf# Sequential API
model = tf.keras.Sequential([tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])# Functional API
inputs = tf.keras.Input(shape=(784,))
x = tf.keras.layers.Dense(64, activation='relu')(inputs)
outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
model = tf.keras.Model(inputs, outputs)
  • PyTorch中,定义模型时需要继承nn.Module类并实现forward方法
import torch
import torch.nn as nnclass Model(nn.Module):def __init__(self):super(Model, self).__init__()self.dense1 = nn.Linear(784, 64)self.relu = nn.ReLU()self.dense2 = nn.Linear(64, 10)self.softmax = nn.Softmax(dim=1)def forward(self, x):x = self.relu(self.dense1(x))x = self.softmax(self.dense2(x))return xmodel = Model()

(二)数据处理

  • TensorFlow有tf.data模块来处理数据管道
import tensorflow as tfdef preprocess(data):# 数据预处理逻辑return datadataset = tf.data.Dataset.from_tensor_slices((X_train, y_train))
dataset = dataset.map(preprocess).batch(32)
  • PyTorch使用torch.utils.data.DataLoader和Dataset类来处理数据管道
import torch
from torch.utils.data import DataLoader, Datasetclass CustomDataset(Dataset):def __init__(self, data, labels):self.data = dataself.labels = labelsdef __len__(self):return len(self.data)def __getitem__(self, idx):x = self.data[idx]y = self.labels[idx]return x, ydataset = CustomDataset(X_train, y_train)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

(三)训练过程

  • TensorFlow的tf.keras提供了高阶API来进行模型编译和训练
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=5, batch_size=32)
  • PyTorch中,训练过程需要手动编写,包括前向传播、损失计算、反向传播和优化步骤
import torch.optim as optimcriterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)for epoch in range(5):for data, labels in dataloader:optimizer.zero_grad()outputs = model(data)loss = criterion(outputs, labels)loss.backward()optimizer.step()

(四)自动求导

  • TensorFlow在后端自动处理梯度计算和应用
# 使用model.fit自动处理
  • PyTorch的自动求导功能非常灵活,可以使用autograd模块
# 使用loss.backward()和optimizer.step()手动处理

四、TensorFlow和PyTorch的应用

总体来说,PyTorch提供了更多的灵活性和控制,适合需要自定义复杂模型和训练过程的场景。而TensorFlow则更加高级和简洁,适合快速原型和标准模型的开发。

TensorFlow:

  • 高阶API:使用tf.keras简化模型定义、训练和评估,适合快速原型开发和生产部署。
  • 性能优化:支持图计算,优化执行速度和资源使用,适合大规模分布式训练。
  • 广泛生态:拥有丰富的工具和库,如TensorBoard用于可视化,TensorFlow Lite用于移动端部署。
  • 企业支持:由Google支持,广泛应用于工业界,提供稳定的长期支持和更新。

PyTorch:

  • 灵活性:采用动态图计算,代码易于调试和修改,适合研究和实验。
  • 简单直观:符合Python语言习惯,API设计简洁明了,降低学习曲线。
  • 社区活跃:由Facebook支持,拥有活跃的开源社区,快速响应用户需求和改进。
  • 科研应用:广泛应用于学术界,支持多种前沿研究,如自定义损失函数和复杂模型结构。

五、动态图计算

动态图计算是PyTorch的一个显著特点,它让模型的计算图在每次前向传播时动态生成,而不是像TensorFlow那样预先定义和编译。

动态图计算的定义与特性:

  • 动态生成:每次执行前向传播时,计算图都会根据当前输入数据动态构建。
  • 即时调试:允许在代码执行时使用标准的Python调试工具(如pdb),进行逐步调试和检查。
  • 灵活性高:支持更复杂和动态的模型结构,如条件控制流和递归神经网络,更适合研究实验和快速原型开发。

(一)TensorFlow(静态图计算):

在TensorFlow中,计算图是预先定义并编译的。在模型定义和编译之后,图结构固定,随后输入数据进行计算。

import tensorflow as tf# 定义计算图
x = tf.placeholder(tf.float32, shape=(None, 784))
y = tf.placeholder(tf.float32, shape=(None, 10))
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
logits = tf.matmul(x, W) + b
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=logits))# 创建会话并执行
with tf.Session() as sess:sess.run(tf.global_variables_initializer())for i in range(1000):batch_x, batch_y = ...  # 获取训练数据sess.run(loss, feed_dict={x: batch_x, y: batch_y})

(二)PyTorch(动态图计算):

在PyTorch中,计算图在每次前向传播时动态构建,代码更接近标准的Python编程风格。

import torch
import torch.nn as nn
import torch.optim as optim# 定义模型
class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.dense = nn.Linear(784, 10)def forward(self, x):return self.dense(x)model = Model()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练过程
for epoch in range(1000):for data, target in dataloader:optimizer.zero_grad()output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()
http://www.hkea.cn/news/433250/

相关文章:

  • 文件服务器网站搭建教程好的竞价托管公司
  • 黑龙江省城乡和住房建设厅网站首页百度链接地址
  • 网站模板修改工具专业seo关键词优化
  • 口碑好的句容网站建设yahoo搜索
  • 深圳网站建设外贸公司价格网络营销的背景和意义
  • 长春网站建设硕成传媒seo快速排名优化公司
  • web网站开发能使用c 吗免费建立个人网站申请
  • 织梦网站修改教程视频网站优化培训学校
  • 南沙区交通和建设局网站中国十大网络销售公司
  • 免费建设网站的方法百度网址大全 官网
  • 手机网站设计制作公司微信推广费用一般多少
  • 建设网站需要什么注册域名费用一般多少钱
  • 女性门户网站源码百度指数功能有哪些
  • 怎么帮公司做网站建设谷歌搜索引擎免费入口 香港
  • 请写出网站建设前期需要做的准备外贸定制网站建设电话
  • 南京门户网站建设网络营销优秀案例
  • 2012服务器如何做网站周口网络推广哪家好
  • 贵阳搜索玩的网站网络舆情软件免费入口
  • 前端自己写代码建网站要花多少钱游戏推广在哪里接活
  • 网站建设中+网页代码nba最新排名东西部
  • 东莞企业建设网站官网有限公司百度推广深圳分公司
  • 海外推广工作内容搜索引擎优化seo是什么
  • wordpress 发短信西安网络优化大的公司
  • dreamweaver个人网站南宁求介绍seo软件
  • 网站常用素材企业培训视频
  • 北京市通州区建设委员会网站网站新站整站排名
  • 太原网站推广只选中联传媒推广排名seo
  • 企业网站建设的常见流程为百度互联网营销顾问
  • 养殖企业网站网络营销策划名词解释
  • 如何进行电子商务网站推广?百度网盘app