深度学习回顾:七种网络

一、说明

        本文 揭开CNN、Seq2Seq、Faster R-CNN 和 PPO ,以及transformer和humg-face— 编码和创新之路。对于此类编程的短小示例,用于对照观察,或做学习实验。

二、CNN网络示例

2.1 CNN用mnist数据集

CNN 专为图像处理而设计,包括称为卷积层的层,这些层对输入数据应用卷积运算,强调局部特征。

2.1.1 CNN的基本结构:

以下是使用 TensorFlow 和 Keras 库的基本卷积神经网络 (CNN) 的更全面实现。此示例将:

  1. 加载 MNIST 数据集,这是一个用于手写数字识别的常用数据集。
  2. 对数据进行预处理。
  3. 定义基本的 CNN 架构。
  4. 使用优化器、损失函数和度量编译模型。
  5. 在 MNIST 数据集上训练 CNN。
  6. 评估经过训练的 CNN 在测试数据上的准确性。

2.1.2 代码示例

import numpy as npclass NeuralNetwork:def __init__(self, input_size, hidden_size, output_size):# Initialize weights and biases with random valuesself.weights1 = np.random.randn(input_size, hidden_size)self.weights2 = np.random.randn(hidden_size, output_size)self.bias1 = np.random.randn(1, hidden_size)self.bias2 = np.random.randn(1, output_size)def sigmoid(self, x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(self, x):return x * (1 - x)def forward(self, X):self.hidden = self.sigmoid(np.dot(X, self.weights1) + self.bias1)output = self.sigmoid(np.dot(self.hidden, self.weights2) + self.bias2)return outputdef train(self, X, y, epochs, learning_rate):for epoch in range(epochs):# Forward propagationoutput = self.forward(X)# Compute errorerror = y - output# Backward propagationd_output = error * self.sigmoid_derivative(output)error_hidden = d_output.dot(self.weights2.T)d_hidden = error_hidden * self.sigmoid_derivative(self.hidden)# Update weights and biasesself.weights2 += self.hidden.T.dot(d_output) * learning_rateself.bias2 += np.sum(d_output, axis=0, keepdims=True) * learning_rateself.weights1 += X.T.dot(d_hidden) * learning_rateself.bias1 += np.sum(d_hidden, axis=0, keepdims=True) * learning_rate# Print the error at every 1000 epochsif epoch % 1000 == 0:print(f"Epoch {epoch}, Error: {np.mean(np.abs(error))}")# Sample data for XOR problem
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])# Create neural network instance and train
nn = NeuralNetwork(input_size=2, hidden_size=4, output_size=1)
nn.train(X, y, epochs=10000, learning_rate=0.1)# Test the neural network
print("Predictions after training:")
for data in X:print(f"{data} => {nn.forward(data)}")

2.2 用CIFAR-10数据集

问题陈述:在本次挑战中,您将深入计算机视觉世界并使用卷积神经网络 (CNN) 解决图像分类任务。您将使用 CIFAR-10 数据集,其中包含 10 个不同类别的 60,000 张不同图像。您的任务是构建一个 CNN 模型,能够准确地将这些图像分类为各自的类别。

# Image Classification with Convolutional Neural Networks (CNN)
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = cifar10.load_data()# Preprocess the data
x_train, x_test = x_train / 255.0, x_test / 255.0# Build a CNN model
model = Sequential([Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),MaxPooling2D((2, 2)),Conv2D(64, (3, 3), activation='relu'),MaxPooling2D((2, 2)),Conv2D(64, (3, 3), activation='relu'),Flatten(),Dense(64, activation='relu'),Dense(10)
])# Compile the model
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])# Train the model
model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))

三、循环神经网络 (RNN)

RNN 旨在识别数据序列中的模式,例如文本或时间序列。它们保留对先前输入的记忆。

3.1 基本RNN结构:

让我们使用 TensorFlow 和 Keras 创建一个基本的递归神经网络 (RNN)。此示例将演示:

  1. 加载序列数据集(我们将使用 IMDB 情感分析数据集)。
  2. 预处理数据。
  3. 定义一个简单的 RNN 架构。
  4. 使用优化器、损失函数和度量编译模型。
  5. 在数据集上训练 RNN。
  6. 评估经过训练的 RNN 在测试数据上的准确性。

3.2 代码示例

# Import necessary libraries
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences# Constants
VOCAB_SIZE = 10000
MAX_LEN = 500
EMBEDDING_DIM = 32# Load and preprocess the dataset
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=VOCAB_SIZE)# Pad sequences to the same length
train_data = pad_sequences(train_data, maxlen=MAX_LEN)
test_data = pad_sequences(test_data, maxlen=MAX_LEN)# Define the RNN architecture
model = tf.keras.Sequential([tf.keras.layers.Embedding(VOCAB_SIZE, EMBEDDING_DIM, input_length=MAX_LEN),tf.keras.layers.SimpleRNN(32, return_sequences=True),tf.keras.layers.SimpleRNN(32),tf.keras.layers.Dense(1, activation='sigmoid')
])# Compile the model
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])# Train the model
model.fit(train_data, train_labels, epochs=10, batch_size=128, validation_split=0.2)# Evaluate the model's accuracy on the test data
test_loss, test_acc = model.evaluate(test_data, test_labels)
print(f'Test accuracy: {test_acc}')

四、LSTM用于机器翻译的序列到序列 (Seq2Seq) 模型 

4.1 关于Seq2Seq

问题陈述:机器翻译在打破语言障碍、促进全球交流方面发挥着至关重要的作用。在本次挑战中,您将踏上自然语言处理 (NLP) 和深度学习之旅,以实现机器翻译的序列到序列 (Seq2Seq) 模型。您的任务是建立一个模型,可以有效地将文本从一种语言翻译成另一种语言。

4.2 代码示例

# Sequence-to-Sequence (Seq2Seq) Model for Machine Translation
import tensorflow as tf
import numpy as np
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, LSTM, Dense# Define the encoder-decoder model for machine translation
latent_dim = 256
encoder_inputs = Input(shape=(None, num_encoder_tokens))
encoder_lstm = LSTM(latent_dim, return_state=True)
encoder_outputs, state_h, state_c = encoder_lstm(encoder_inputs)
encoder_states = [state_h, state_c]decoder_inputs = Input(shape=(None, num_decoder_tokens))
decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(decoder_inputs, initial_state=encoder_states)
decoder_dense = Dense(num_decoder_tokens, activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)model = Model([encoder_inputs, decoder_inputs], decoder_outputs)# Compile and train the model for machine translation
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit([encoder_input_data, decoder_input_data], decoder_target_data, batch_size=batch_size, epochs=epochs, validation_split=0.2)

五、使用 Faster R-CNN 进行物体检测 

5.1 关于R-CNN的概念

问题陈述:您的任务是使用 Faster R-CNN(基于区域的卷积神经网络)模型实现对象检测。给定图像,您的目标是识别和定位图像中的对象,提供对象的类和边界框坐标。

5.2 代码示例

# Object Detection with Faster R-CNN
import tensorflow as tf
from tensorflow.keras.applications import ResNet50
from tensorflow.keras.layers import Input
from tensorflow.keras.models import Model
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.imagenet_utils import decode_predictions# Load a pre-trained ResNet50 model
base_model = ResNet50(weights='imagenet')# Add custom layers for object detection
x = base_model.layers[-2].output
output = Dense(num_classes, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=output)# Load and preprocess an image for object detection
img_path = 'image.jpg'
img = image.load_img(img_path, target_size=(224, 224))
img = image.img_to_array(img)
img = np.expand_dims(img, axis=0)
img = tf.keras.applications.resnet.preprocess_input(img)# Make predictions for object detection
preds = model.predict(img)
predictions = decode_predictions(preds, top=5)[0]
print(predictions)

六、使用近端策略优化 (PPO) 的强化学习 

问题陈述:您正在进入强化学习 (RL) 的世界,并负责实施近端策略优化 (PPO) 算法来训练代理。使用 OpenAI Gym 的 CartPole-v1 环境,您的目标是开发一个 RL 代理,通过采取最大化累积奖励的行动来学习平衡移动推车上的杆子。

# Reinforcement Learning with Proximal Policy Optimization (PPO)
import gym
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Dense# Create a Gym environment
env = gym.make('CartPole-v1')# Build a PPO agent
model = keras.Sequential([Dense(64, activation='relu', input_shape=(env.observation_space.shape[0],)),Dense(32, activation='relu'),Dense(env.action_space.n, activation='softmax')
])
optimizer = keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer, loss='categorical_crossentropy')# Train the agent using PPO
for episode in range(1000):state = env.reset()done = Falsewhile not done:action_probs = model.predict(state.reshape(1, -1))[0]action = np.random.choice(env.action_space.n, p=action_probs)next_state, reward, done, _ = env.step(action)# Update the agent's policy using PPO training# (Implementing PPO training is a more complex task)state = next_state

关注AI更多资讯!旅程 — AI  :Jasmin Bharadiya

七、变形金刚

7.1 transformer的概念

Transformer 最初是为自然语言处理任务而设计的,具有自注意力机制,允许它们权衡输入不同部分的重要性。

7.2 Transformer 片段(使用 Hugging Face 的 Transformers 库):

Hugging Face 的 Transformers 库使使用 BERT、GPT-2 等 Transformer 架构变得非常容易。让我们创建一个基本示例:

  1. 加载用于文本分类的预训练 BERT 模型。
  2. 标记化一些输入句子。
  3. 通过 BERT 模型传递标记化输入。
  4. 输出预测的类概率。

在本演示中,让我们使用 BERT 模型进行序列分类:

# Installation (if you haven't done it yet)
#!pip install transformers# Import required libraries
from transformers import BertTokenizer, BertForSequenceClassification
import torch# Load pretrained model and tokenizer
model_name = 'bert-base-uncased'
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=2)  # For binary classification
tokenizer = BertTokenizer.from_pretrained(model_name)# Tokenize input data
input_texts = ["I love using transformers!", "This library is difficult to understand."]
inputs = tokenizer(input_texts, return_tensors='pt', padding=True, truncation=True, max_length=512)# Forward pass: get model predictions
with torch.no_grad():outputs = model(**inputs)logits = outputs.logitsprobabilities = torch.nn.functional.softmax(logits, dim=-1)# Display predicted class probabilities
print(probabilities)

此脚本初始化用于二进制序列分类的 BERT 模型,对输入句子进行标记,然后根据模型的对数进行预测。

最终输出 , 包含输入句子的预测类概率。probabilities

请注意,此模型已针对二元分类(使用 )进行了初始化,因此它最适合情绪分析等任务。num_labels=2

对于多类分类或其他任务,您可以调整并可能选择不同的预训练模型,或者在特定数据集上微调模型。num_labels

八、结论

        深度学习的世界是广阔的,正如上面所展示的那样,其算法可能会根据其应用领域变得复杂。然而,多亏了 TensorFlow 和 Hugging Face 等高级库,使用这些算法变得越来越容易

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣 hot100 最小覆盖子串 滑动窗口 字符计数

&#x1f468;‍&#x1f3eb; 题目地址 &#x1f37b; AC code class Solution {public String minWindow(String s, String t){int n s.length();int m t.length();if (n < m)return "";char[] tt t.toCharArray();int[] cnt new int[128];// 字符计数数组…

【Proteus仿真】【Arduino单片机】蔬菜大棚温湿度控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DHT11温湿度传感器、按键、继电器、蜂鸣器、加热、水泵电机等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD160…

innovus如何在floorplan view显示所有module

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如题&#xff0c;innovus的图形界面在floorplan view下默认只能显示instance数量超过100个的module&#xff0c;如果要显示更小的module&#xff0c;需要在VIEW-Set Perference…

蓝桥杯-动态规划-子数组问题

目录 一、乘积最大数组 二、乘积为正数的最长子数组长度 三、等差数列划分 四、最长湍流子数组 心得&#xff1a; 最重要的还是状态表示&#xff0c;我们需要根据题的意思&#xff0c;来分析出不同的题&#xff0c;不同的情况&#xff0c;来分析需要多少个状态 一、乘积最…

2021年全国a级景区数据,shp+csv数据均有

大家好~这周将和大家分享关于文化旅游和城乡建设相关的数据&#xff0c;希望大家喜欢~ 今天分享的是2021年全国a级景区数据&#xff0c;数据格式有shpcsv&#xff0c;几何类型为点&#xff0c;已经经过清洗加工&#xff0c;可直接使用&#xff0c;以下为部分字段列表&#xff…

Linux中fork的进一步加深及信号基础

1.通过题目理解fork 1.打印结果?产生了几个进程? #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main() { int i0; for(;i<2;i) { fork(); printf("A\n"); } exit(0); } 所以打印…

西南科技大学电路分析基础实验A1(元件伏安特性测试 )

目录 一、实验目的 二、实验设备 三、预习内容(如:基本原理、电路图、计算值等) 1、测定线性电阻的伏安特性 2、二极管伏安特性测试 3、测定实际电压源的伏安特性 四、实验数据及结果分析(预习写必要实验步骤和表格) 1、测定线性电阻的伏安特性 2、二极管伏安特性测…

Linux环境配置Seata开机自启脚本(在MySQL和Nacos启动后启动)

之前给seata配置了一个开机启动脚本&#xff0c;但是经常出现启动失败&#xff0c;查询日志要么MySQL没有连接上要么nacos连接不上&#xff0c;原因都是因为服务器重启的时候这两个服务都还没有完全启动&#xff0c;所以正常的做法应该是启动前先等前置服务启动好了再启动seata…

大语言模型:以Amazon Titan等大语言模型为例介绍

大语言模型&#xff08;Large Language Model&#xff09;是一种人工智能技术&#xff0c;通过对海量文本数据进行训练&#xff0c;学习语言的结构、规则和语义&#xff0c;从而可以生成具有自然语言风格的文本或回答自然语言的问题。大语言模型一般基于神经网络技术&#xff0…

华为云CDN刷新与查询余量的Go实现及在Jenkins中的部署

引言 在华为云上&#xff0c;对CDN缓存内容进行刷新是一个常见的需求&#xff0c;以确保最新的内容能尽快被用户访问到。通过使用Go语言&#xff0c;我们可以开发一个自动化的工具来实现这一需求&#xff0c;并将其集成到Jenkins中以实现持续部署。下面我们将分步骤讲解如何实…

Bypass open_basedir的方法

文章目录 open_basedir概念绕过方法命令执行绕过symlink 绕过 &#xff08;软连接&#xff09;利用chdir()与ini_set()组合绕过 例题 [suctf 2019]easyweb open_basedir概念 open_basedir是php.ini的设置 在open_basedir设置路径的话 那么网站访问的时候 无法访问除了设置以外的…

KaiwuDB 亮相中国 5G + 工业互联网大会,助力新型工业化

11月19-21日&#xff0c;由各相关政府部门共同主办的“2023 中国 5G工业互联网大会”在湖北武汉盛大举行。作为我国“5G工业互联网”领域的国家级顶会&#xff0c;本届大会以“数实融合&#xff0c;大力推进新型工业化”为主题&#xff0c;聚焦新型基础设施、产业转型升级、技术…

笔记62:注意力汇聚 --- Nadaraya_Watson 核回归

本地笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章&#xff1a;动手学深度学习~注意力机制 a a a a a a a a a a a a a a a a

【一维数组】交换数组

题目 将数组A中的内容和数组B中的内容进行交换。&#xff08;数组一样大&#xff09; 解题方式通过函数封装可以实现任意类型的数组元素交换 思路来源&#xff1a;qsort函数的模拟实现 void Change_arr2(void* ch1, void* ch2, size_t num, size_t sz) {for (int i 0; i < …

Docker配置Halo搭建个人博客-快速入门

Docker配置Halo搭建个人博客-快速入门 1 官方文档2 安装Halo2.1 创建Halo主目录2.2 远程下载配置文件2.3 编辑配置文件2.4 拉取最新镜像2.6 查看容器2.7 开放服务器的防火墙 3 运行3.1 运行项目3.2 停止项目 4 常见问题4.1 没有权限4.2 ommand netstart not found, did you mea…

8.0 泛型

通过之前的学习&#xff0c;读者可以了解到&#xff0c;把一个对象存入集合后&#xff0c;再次取出该对象时&#xff0c;该对象的编译类型就变成了Object类型&#xff08;尽管其在运行时类型没有改变&#xff09;。集合设计成这样&#xff0c;提高了它的通用性&#xff0c;但是…

Git的原理与使用(一):Git的基本操作(包含:版本回退)

Git原理与使用一 一.Git的初识与安装1.什么是Git2.如何安装Git1.git命令与git help(Git下的"man手册")2.centos下安装Git3.ubantu下安装Git 二.Git的前置操作与前置知识1.创建Git本地仓库2.配置Git3.理解Git的分区1.工作区2.暂存区3.版本库4.分区关系总结 三.添加文件…

springboot启动Table ‘xxx‘ already exists

jpa.generate-ddl和jpa.hibernate.ddl-auto都可以控制是否执行datasource.schema脚本&#xff0c;来初始化数据库结构&#xff0c;只要有一个为可执行状态就会执行&#xff0c;比如jpa.generate-ddl:true或jpa.generate-ddl:update&#xff0c;并没有相互制约上下级的关系。 要…

Android修行手册 - 使用ViewPager2实现画廊效果

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

小航助学题库蓝桥杯题库stem选拔赛(22年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…