wordpress前台/宁波seo网络推广代理公司
文章目录
- 1 数据编码
- 2 网络搭建
- 3 网络配置,训练
- 4 结果预测
- 5 翻车现场
学习参考来自:
- Fizz Buzz in Tensorflow
- https://github.com/wmn7/ML_Practice/tree/master/2019_06_10
- Fizz Buzz in Pytorch
I need you to print the numbers from 1 to 100, except that if the number is divisible by 3 print “fizz”, if it’s divisible by 5 print “buzz”, and if it’s divisible by 15 print “fizzbuzz”.
编程题很简单,我们用 MLP 实现试试
思路,训练集数据101~1024,对其进行某种规则的编码,标签为经分类 one-hot 编码后的标签
测试集,1~100
don’t say so much, show me the code.
1 数据编码
import numpy as np
import torch
import torch.nn as nn
import torch.utils.data as Datadef binary_encode(i, num_digits):"""将每个input转换为binary digits(转换为二进制的表示, 最多可是表示2^num_digits):param i::param num_digits::return:"""return np.array([i >> d & 1 for d in range(num_digits)])
编码形式,依次除以 2 0 , 1 , 2 , 3 , . . . 2^{0,1,2,3,...} 20,1,2,3,...,结果按位与 1
m & 1,结果为 0 表示 m 为偶数, 结果为 1 表示 m 为奇数
> > m >> m >>m 右移表示除以 2 m 2^m 2m
第一位就能表示奇偶了,所有数字编码都不一样
eg,101 进行 num_digits=10
编码后结果为 1 0 1 0 0 1 1 0 0 0
步骤
101 / 1 = 101 奇数 1
101 / 2 = 50 偶数 0
101 / 4 = 25 奇数 1
101 / 8 = 12 偶数 0
101 / 16 = 6 偶数 0
101 / 32 = 3 奇数 1
101 / 64 = 1 奇数 1
101 / 128 = 0 偶数 0
101 / 256= 0 偶数 0
101 / 512= 0 偶数 0
标签,0,1,2,3 四个类别
def fizz_buzz_encode(i):"""将output转换为lebel:param i::return:"""if i % 15 == 0: # fizzbuzzreturn 3elif i % 5 == 0: # buzzreturn 2elif i % 3 == 0: # fizzreturn 1else:return 0
编码长度设定,数据集 101 ~ 1024
NUM_DIGITS = 10
trX = np.array([binary_encode(i, NUM_DIGITS) for i in range(101, 2**NUM_DIGITS)]) # 101~1024
trY = np.array([fizz_buzz_encode(i) for i in range(101, 2**NUM_DIGITS)])# print(len(trX), len(trY)) # 923 923
# print(trX[:5])
"""
[[1 0 1 0 0 1 1 0 0 0][0 1 1 0 0 1 1 0 0 0][1 1 1 0 0 1 1 0 0 0][0 0 0 1 0 1 1 0 0 0][1 0 0 1 0 1 1 0 0 0]]
"""
# print(trY[:5]) # [0 1 0 0 3]
2 网络搭建
搭建简单的 MLP 网络
class FizzBuzzModel(nn.Module):def __init__(self, in_features, out_classes, hidden_size, n_hidden_layers):super(FizzBuzzModel,self).__init__()layers = []for i in range(n_hidden_layers):layers.append(nn.Linear(hidden_size,hidden_size))# layers.append(nn.Dropout(0.5))layers.append(nn.BatchNorm1d(hidden_size))layers.append(nn.ReLU())self.inputLayer = nn.Linear(in_features, hidden_size)self.relu = nn.ReLU()self.layers = nn.Sequential(*layers) # 重复的搭建隐藏层self.outputLayer = nn.Linear(hidden_size, out_classes)def forward(self, x):x = self.inputLayer(x)x = self.relu(x)x = self.layers(x)out = self.outputLayer(x)return out
初始化网络,看看网络结构
# Device configuration
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')# define the model
simpleModel = FizzBuzzModel(NUM_DIGITS, 4, 150, 3).to(device)
print(simpleModel)
"""
FizzBuzzModel((inputLayer): Linear(in_features=10, out_features=150, bias=True)(relu): ReLU()(layers): Sequential((0): Linear(in_features=150, out_features=150, bias=True)(1): BatchNorm1d(150, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU()(3): Linear(in_features=150, out_features=150, bias=True)(4): BatchNorm1d(150, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(5): ReLU()(6): Linear(in_features=150, out_features=150, bias=True)(7): BatchNorm1d(150, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(8): ReLU())(outputLayer): Linear(in_features=150, out_features=4, bias=True)
)
"""
输入 10, 输出4,隐藏层维度 150,隐藏层重复了 3 次
3 网络配置,训练
定义下超参数,损失函数,优化器,载入数据训练,输出训练精度与损失
# Loss and optimizer
learning_rate = 0.05
criterion = nn.CrossEntropyLoss()
# optimizer = torch.optim.Adam(simpleModel.parameters(), lr=learning_rate)
optimizer = torch.optim.SGD(simpleModel.parameters(), lr=learning_rate)# 使用batch进行训练
FizzBuzzDataset = Data.TensorDataset(torch.from_numpy(trX).float().to(device),torch.from_numpy(trY).long().to(device))loader = Data.DataLoader(dataset=FizzBuzzDataset,batch_size=128*5,shuffle=True)# 进行训练
simpleModel.train()
epochs = 3000for epoch in range(1, epochs):for step, (batch_x, batch_y) in enumerate(loader):out = simpleModel(batch_x) # 前向传播loss = criterion(out, batch_y) # 计算损失optimizer.zero_grad() # 梯度清零loss.backward() # 反向传播optimizer.step() # 随机梯度下降correct = 0total = 0_, predicted = torch.max(out.data, 1)total += batch_y.size(0)correct += (predicted == batch_y).sum().item()acc = 100*correct/totalprint('Epoch : {:0>4d} | Loss : {:<6.4f} | Train Accuracy : {:<6.2f}%'.format(epoch, loss, acc))"""
Epoch : 0001 | Loss : 1.5343 | Train Accuracy : 14.63 %
Epoch : 0002 | Loss : 1.9779 | Train Accuracy : 42.58 %
Epoch : 0003 | Loss : 2.4198 | Train Accuracy : 53.41 %
Epoch : 0004 | Loss : 1.7360 | Train Accuracy : 53.41 %
Epoch : 0005 | Loss : 1.3161 | Train Accuracy : 49.73 %
Epoch : 0006 | Loss : 1.4866 | Train Accuracy : 22.75 %
Epoch : 0007 | Loss : 1.3993 | Train Accuracy : 25.57 %
Epoch : 0008 | Loss : 1.2428 | Train Accuracy : 28.49 %
Epoch : 0009 | Loss : 1.1906 | Train Accuracy : 44.31 %
Epoch : 0010 | Loss : 1.1929 | Train Accuracy : 52.44 %
...
Epoch : 2990 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2991 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2992 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2993 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2994 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2995 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2996 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2997 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2998 | Loss : 0.0000 | Train Accuracy : 100.00%
Epoch : 2999 | Loss : 0.0000 | Train Accuracy : 100.00%
"""
训练集上精度是 OK 的,能到 100%,下面看看测试集上的精度
4 结果预测
把 one-hot 标签转化成 fizz buzz 的形式
def fizz_buzz_decode(i, prediction):return [str(i), "fizz", "buzz", "fizzbuzz"][prediction]
载入测试集,开始预测
simpleModel.eval()
# 进行预测
testX = np.array([binary_encode(i, NUM_DIGITS) for i in range(1, 101)])
predicts = simpleModel(torch.from_numpy(testX).float().to(device))
# 预测的结果
_, res = torch.max(predicts, 1)
print(res)
"""
tensor([0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 1, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 3, 1, 0,0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1, 1, 1, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 1, 0,0, 0, 0, 0], device='cuda:0')
"""# 格式的转换
predictions = [fizz_buzz_decode(i, prediction) for (i, prediction) in zip(range(1, 101), res)]
print(predictions)
"""
['1', '2', '3', 'fizz', '5', '6', '7', 'buzz', 'fizz', '10', 'fizz', 'fizzbuzz', 'fizzbuzz', 'fizz', 'fizz', '16', '17', '18', '19', '20', '21', 'fizzbuzz', 'fizz', '24', '25', '26', '27', '28', '29', '30', 'fizz', '32', '33', '34', '35', '36', '37', '38', '39', 'fizz', '41', 'fizz', '43', '44', '45', 'fizz', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', 'fizz', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', 'fizz', 'fizz', 'fizz', 'fizz', 'buzz', 'buzz', 'fizz', '80', '81', '82', '83', '84', '85', '86', '87', 'fizzbuzz', '89', '90', 'fizz', '92', 'fizz', 'fizz', 'fizz', '96', '97', '98', '99', '100']
"""
5 翻车现场
对比下标签
labels = []
for i in range(1, 101):if i % 15 == 0: # fizzbuzzlabels.append("fizzbuzz")elif i % 5 == 0: # buzzlabels.append("buzz")elif i % 3 == 0: # fizzlabels.append("fizz")else:labels.append(str(i))
print(labels)
print(labels == predictions)"""
['1', '2', 'fizz', '4', 'buzz', 'fizz', '7', '8', 'fizz', 'buzz', '11', 'fizz', '13', '14', 'fizzbuzz', '16', '17', 'fizz', '19', 'buzz', 'fizz', '22', '23', 'fizz', 'buzz', '26', 'fizz', '28', '29', 'fizzbuzz', '31', '32', 'fizz', '34', 'buzz', 'fizz', '37', '38', 'fizz', 'buzz', '41', 'fizz', '43', '44', 'fizzbuzz', '46', '47', 'fizz', '49', 'buzz', 'fizz', '52', '53', 'fizz', 'buzz', '56', 'fizz', '58', '59', 'fizzbuzz', '61', '62', 'fizz', '64', 'buzz', 'fizz', '67', '68', 'fizz', 'buzz', '71', 'fizz', '73', '74', 'fizzbuzz', '76', '77', 'fizz', '79', 'buzz', 'fizz', '82', '83', 'fizz', 'buzz', '86', 'fizz', '88', '89', 'fizzbuzz', '91', '92', 'fizz', '94', 'buzz', 'fizz', '97', '98', 'fizz', 'buzz']
False
"""
哈哈哈, False 翻车了,尝试了很多次,很难 True
相关文章:

【Pytorch】Fizz Buzz
文章目录 1 数据编码2 网络搭建3 网络配置,训练4 结果预测5 翻车现场 学习参考来自: Fizz Buzz in Tensorflowhttps://github.com/wmn7/ML_Practice/tree/master/2019_06_10Fizz Buzz in Pytorch I need you to print the numbers from 1 to 100, excep…...

C++ Primer Plus第十四章笔记
目录 1.包含对象成员的类 valarray类简介 1.2 Student类的设计 1.3 接口和实现 1.4 C和约束 2. 私有继承 2.1 私有继承和组合的异同 2.2 初始化基类组件 2.3 访问基类的方法 2.4 访问基类对象 2.5 访问基类的友元函数 2.5 使用组合还是私有继承 3. 保护继承 4. 使…...

CentOS 7 mini 运行环境搭建与测试——CentOS Mini 安装ifconfig工具【云原生开发部署实践笔记】
云原生开发部署实践笔记 一、开发测试环境搭建与测试 1.1 Linux运行环境的搭建与测试 虽然CentOS已经更新到Stream 9 版本,但基于大多数企业和单位多数使用CentOS 7版本作为运行底座,7版本也一直在更行维护,此实践基于CentOS 7 Mini版本搭…...

案例061:基于微信小程序的互助学习系统
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…...

【ELK03】ES 索引的Mapping映射详解、数据类型和settings属性设置
一、ES 索引的映射和设置 1.MAPPING 映射(MAPPING)就是es中一个决定了文档如何存储,如何生成索引,字段各种类型定义的过程.类似于我们在关系型数据库中创建一个表格数据之前先定义表格有哪些字段,每个字段是什么类型,然后数据会按照这个配置写入表格,ES中同样是这个过程,它由…...

线性代数入门与学习笔记
该内容为重拾部分线性代数知识的学习笔记,内容上更多的是为了解决问题而学习的内容,并非系统化的学习。 针对的问题为:Music算法推导求解过程中的矩阵计算知识。 学习的内容包括:矩阵原理、矩阵行列式、矩阵的秩、线性变换矩阵变换…...

Linux安全学习路标
1. 操作系统基础知识 首先,你需要建立坚实的操作系统基础知识,包括Linux文件系统和目录结构、Linux进程管理、权限管理等基本概念。 2. 网络和通信安全 学习关于网络和通信安全的基础知识,包括TCP/IP协议栈、网络攻击类型、防火墙配置、网…...

常见的中间件--消息队列中间件测试点
最近刷题,看到了有问中间件的题目,于是整理了一些中间件的知识,大多是在小破站上的笔记,仅供大家参考~ 主要分为七个部分来分享: 一、常见的中间件 二、什么是队列? 三、常见消息队列MQ的比较 四、队列…...

【USRP】5G / 6G OAI 系统 5g / 6G OAI system
面向5G/6G科研应用 USRP专门用于5G/6G产品的原型开发与验证。该系统可以在实验室搭建一个真实的5G 网络,基于开源的代码,专为科研用户设计。 软件无线电架构,构建真实5G移动通信系统 X410 采用了目前流行的异构式系统,融合了FP…...

ubuntu20.04设置开机自启动jar(依赖其他服务)
目的: 有的时候我们的项目是部署在物理机上给其他公司员工使用,对于他们来说操作越简单越好。所以我需要实现将我的jar部署在ubuntu上,实现开机自启。(我的项目依赖emqx服务)。 步骤: 切换到system目录 …...

【GEE笔记】在线分类流程,标注样本点、分类和精度评价
GEE在线分类流程 介绍 GEE(Google Earth Engine)是一个强大的地理信息处理平台,可以实现在线的遥感影像分析和处理。本文将介绍如何使用GEE进行在线的分类流程,包括标注样本点、分类和精度评价。本文以2020年5月至8月的哨兵2影像…...

MATLAB基础运算
矩阵和数字相乘 就是矩阵里面每个元素跟这个数字乘一遍 矩阵和矩阵相乘 能不能相乘,需要前面矩阵的列数等于后面矩阵的行数,出来的矩阵大小是前面矩阵的行数*后面矩阵的列数。 所以大家会发现,矩阵相乘如果前后调转了,结果会完全…...

Linux DAC权限的简单应用
Linux的DAC(Discretionary Access Control)权限模型是一种常见的访问控制机制,它用于管理文件和目录的访问权限。作为一名经验丰富的Linux系统安全工程师,我会尽可能以简单明了的方式向计算机小白介绍Linux DAC权限模型。 在Linu…...

JVS低代码表单引擎:数据校验与处理的先锋
随着信息技术的迅速发展,数据校验与处理已经成为了各类应用中不可或缺的一环。尤其是在涉及敏感信息,如密码处理时,其安全性和准确性显得尤为重要。JVS低代码表单引擎提供了强大的文本组件触发逻辑校验功能,它能够在用户填写数据的…...

clickhouse删除partition分区数据
clickhouse分布式表tencent_table_20231208_DIST,本地表tencent_table_20231208_local; 30台clickhouse存储服务器; 本地表:tencent_table_20231208_local CREATE TABLE tencent_sz.tencent_table_20231208_local (id Int64 DEFA…...

持续集成交付CICD:CentOS 7 安装 Nexus 3.63
目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 (1)当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version(2)下载Nexus新…...

Apache Flink(十):Flink集群基础环境搭建-JDK及MySQL搭建
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录...

LVS-DR+Keepalived+动静分离实验
架构图 解释一下架构,大概就是用Keepalived实现两台DR服务器的LVS负载均衡,然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离这个实验其实就是把 LVS-DRKeepalived 和 动静分离 给拼起来,真的是拼起来,两个部分…...

java面试题-Hashmap、Hashtable、ConcurrentHashMap原理
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 Hashmap和hashtable存储…...

数据可视化:解锁企业经营的智慧之道
在现代企业管理中,数据可视化已经成为了一项重要的工具。它不仅仅是简单地展示数据,更是提供了深入理解数据、做出更明智决策的方法。作为一名可视化设计从业人员,我经手过一些企业自用的数据可视化项目,今天就来和大家聊聊数据可…...

JVM 性能调优
概述篇 面试题 讲讲你理解的性能评价及测试指标?(瓜子) 生产环境中的问题 生产环境发生了内存溢出该如何处理?生产环境应该给服务器分配多少内存合适?如何对垃圾回收器的性能进行调优?生产环境CPU负载飙高…...

linux常用命令-yum命令详解(超详细)
文章目录 前言一、yum命令介绍1. yum命令简介2. yum命令的基本语法3. 常用的yum命令选项4. 常用的yum命令参数 二、yum命令示例用法1. 安装软件包2. 更新软件包3. 删除软件包4. 搜索软件包5. 列出已安装的软件包6. 列出可用的软件包7. 清理缓存8. 禁用软件包仓库 总结 前言 yu…...

解决 Element-ui中 表格(Table)使用 v-if 条件切换后,表格的列的筛选不显示了
解决方法 在每个需要使用 v-if 或 v-else 的 el-table-column 上增加 key 作为唯一标识,这样渲染的时候就不会因为复用原则导致列数据混乱了。关于key值,一般习惯使用字段名,也可随机生成一个值,只要具有唯一性就可以。...

Navicat 技术指引 | 适用于 GaussDB 分布式的自动运行功能
Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…...

爬虫 selenium语法 (八)
目录 一、为什么使用selenium 二、selenium语法——元素定位 1.根据 id 找到对象 2.根据标签属性的属性值找到对象 3.根据Xpath语句获取对象 4.根据标签名获取对象 5.使用bs语法获取对象 6.通过链接文本获取对象 三、selenium语法——访问元素信息 1.获取属性的属性值…...

NTP时钟同步服务器(校时服务器)技术参数分享
NTP时钟同步服务器(校时服务器)技术参数分享 网络校时服务器是一款先进的智能化高精度时钟同步设备。 网络校时服务器从 GPS、北斗、GLONASS、Galileo等导航定位卫星系统上获取标准时间信息,并通过 NTP/SNTP 或其他网络协议,在网络…...

JDBC详解——增删改查(CRUD)、sql注入、事务、连接池
1. 概念: Java DataBase Connectivity, Java 数据库连接, Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口&…...

K-means算法通俗原理及Python与R语言的分别实现
K均值聚类方法是一种划分聚类方法,它是将数据分成互不相交的K类。K均值法先指定聚类数,目标是使每个数据到数据点所属聚类中心的总距离变异平方和最小,规定聚类中心时则是以该类数据点的平均值作为聚类中心。 01K均值法原理与步骤 对于有N个…...

使用 db2diag 工具来分析 db2diag 日志文件
供数据库和系统管理员使用的主日志文件为管理通知日志。db2diag 日志文件旨在供 IBM 软件支持机构用于进行故障诊断。 管理通知日志消息也以标准化消息格式记录到 db2diag 日志文件。 db2diag 工具用于对 db2diag 日志文件中的大量信息进行过滤和格式化。过滤 db2diag 日志文…...

在Pytorch中使用Tensorboard可视化训练过程
这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 本节课我们来讲一下如何在pytouch当中去使用我们的tensorboard 对我们的训练过程进行一个可视化 左边有一个visualizing models data and training with tensorboard 主要是这么一个教程 那么这里…...