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

【深度学习】TensorFlow基础介绍

TensorFlow

模型

张量、变量共同点:具有形状、类型、值等3个属性。

不同点:变量可被TensorFlow的自动求导机制求导,常被用于机器学习模型的参数。

tfrecord

tensorflow定义的数据格式,一种二进制文件格式,用于保存和读取图像和文本数据。tfrecord文件包含了tf.train.Example protobuf数据。It is designed for use with TensorFlow and is used throughout the higher-level APIS such as TFX.

基本结构与数据类型

tf.train.Example的数据结构是一个字典称为Features,其内部结构可从proto文件看出:

message Example {Features features = 1;
};message Features{map<string, Feature> featrue = 1;
};message Feature{oneof kind{BytesList bytes_list = 1;FloatList float_list = 2;Int64List int64_list = 3;}
};

数据类型Feature有3个,Int64、Bytes、Float;Int64存储bool、Enum、uint32、int32、int64、uint64,Bytes存储字符串、二进制,Float存储float(float32)和double(float64)。

文件格式即把数据参考字典结构做二进制数据的protobuf序列化,称为string。

def serialize_example(f1, f2, f3, f4):fts = {"feature0": _int64_feature(f1),"feature1": _int64_feature(f2),"feature2": _bytes_feature(f3),"feature3": _float_feature(f4),}m = tf.train.Example(features=tf.train.Features(feature=fts))return m.SerializeToString()
ps = serialize_example(3, True, b"goal", 0.999)
ex_proto = tf.train.Example.FromString(ps)

tf.train.Feature是被tf.train.Example兼容的。

import tensorflow as tf
def _bytes_feature(x):if isinstance(x, type(tf.constant(0))):x = x.numpy()return tf.train.Feature(bytes_list=tf.train.BytesList(value=[x]))
读写tfrecord文件
  1. 写文件
# Write the `tf.train.Example` observations to the file.
with tf.io.TFRecordWriter(filename) as writer:for i in range(n_observations):example = serialize_example(feature0[i], feature1[i], feature2[i], feature3[i])writer.write(example)
  1. 读文件
fn = "./Waymo.tfrecord"
rd = tf.data.TFRecordDataset(fn)
# 数据格式 
feature_description = {'feature0': tf.io.FixedLenFeature([], tf.int64, default_value=0),'feature1': tf.io.FixedLenFeature([], tf.int64, default_value=0),'feature2': tf.io.FixedLenFeature([], tf.string, default_value=''),'feature3': tf.io.FixedLenFeature([], tf.float32, default_value=0.0),
}def _parse_function(example_proto):# Parse the input `tf.train.Example` proto using the dictionary above.return tf.io.parse_single_example(example_proto, feature_description)parsed_dataset = raw_dataset.map(_parse_function)
for parsed_record in parsed_dataset.take(10):print(repr(parsed_record))
Waymo Open Dataset

采用tfrecord的数据协议,Dataset结构需参考
https://github.com/waymo-research/waymo-open-dataset/blob/master/waymo_open_dataset/dataset.proto
使用Python库waymo-open-dataset

#与tensorflow版本对应,如tf为2.3.0
pip3 install waymo-open-dataset-tf-2-3-0 --user
fn = ["/data/Waymo_training_segment-10023947602400723454_1120_000_1140_000_with_camera_labels.tfrecord"
]
dataset = tf.data.TFRecordDataset(fn)
for data in dataset.take(1000):frame = open_dataset.Frame()frame.ParseFromString(bytearray(data.numpy()))# plt.figure(figsize=(25, 20))# for index, image in enumerate(frame.images):#   show_camera_image(image, frame.camera_labels, [3, 3, index+1])# plt.show()ts = frame.timestamp_microsst_img = frame.images[0]for labels in frame.camera_labels:if labels.name == st_img.name:for label in labels.labels:x = int(label.box.center_x - 0.5 * label.box.length)y = int(label.box.center_y - 0.5 * label.box.width)width = int(label.box.length)height = int(label.box.width)

重复造轮子:用tf.io实现读取数据集。

问题

https://stackoverflow.com/questions/61166864/tensorflow-python-framework-ops-eagertensor-object-has-no-attribute-in-graph

Waymo Open Dataset文件解析格式,如何确定字典结构

raw_image_dataset = tf.data.TFRecordDataset('images.tfrecords')# Create a dictionary describing the features.
image_feature_description = {'height': tf.io.FixedLenFeature([], tf.int64),'width': tf.io.FixedLenFeature([], tf.int64),'depth': tf.io.FixedLenFeature([], tf.int64),'label': tf.io.FixedLenFeature([], tf.int64),'image_raw': tf.io.FixedLenFeature([], tf.string),
}def _parse_image_function(example_proto):# Parse the input tf.train.Example proto using the dictionary above.return tf.io.parse_single_example(example_proto, image_feature_description)parsed_image_dataset = raw_image_dataset.map(_parse_image_function)

相关文章:

【深度学习】TensorFlow基础介绍

TensorFlow 模型 张量、变量共同点&#xff1a;具有形状、类型、值等3个属性。 不同点&#xff1a;变量可被TensorFlow的自动求导机制求导&#xff0c;常被用于机器学习模型的参数。 tfrecord tensorflow定义的数据格式&#xff0c;一种二进制文件格式&#xff0c;用于保存…...

springcloud:3.3测试重试机制

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http:/…...

【笔记】【电子科大 离散数学】 3.谓词逻辑

谓词引入 因为含变量的语句&#xff08;例如x > 3&#xff09;不是命题&#xff0c;无法进行逻辑推理。 为了研究简单命题句子内部的逻辑关系&#xff0c;我们需要对简单命题进行分解&#xff0c;利用个体词&#xff0c;谓词和量词来描述它们&#xff0c;并研究个体与总体…...

倍增算法C++

倍增 倍增算法是一种优化算法&#xff0c;通常用于某些需要高效计算指数幂的场景。它基于分治的思想&#xff0c;通过反复求平方来实现快速计算指数幂的目的。在实际应用中&#xff0c;倍增算法经常用于解决最近公共祖先问题、二分查找等。 1、快速幂详解 ksm核心代码 倍增就是…...

uniapp制作--进步器的选择

介绍&#xff1a; 进步器的选择,一般用于商城购物选择物品数量的场景 注意&#xff1a;该输入框只能输入大于或等于0的整数 效果展示&#xff1a; 代码展示&#xff1a; 以下是一个简单的购物车页面示例&#xff0c;包括选择商品和显示数量的功能&#xff1a; 在这个示例中…...

前端高频面试--查缺补漏篇

什么是进程和线程&#xff0c;有什么区别 进程&#xff1a;进程是程序的一次执行过程&#xff0c;是动态的过程&#xff0c;有自身产生、存在、消亡的过程。 线程&#xff1a;线程由进程创建&#xff0c;是进程的一个实体。一个进程可以拥有多个线程。 举个例子&#xff1a;…...

【计算机学习】-- 网页视频加速

系列文章目录 文章目录 系列文章目录前言一、开发者选项二、定义和用法1.基础语法&#xff1a;2.什么是uncaught TypeError:Cannot read properties of null? 二、开发者工具面板&#xff1a;1.Elements面板&#xff1a;2.Console面板&#xff1a; 总结 前言 一、开发者选项 …...

系统运维-Linux配置C、C++、Go语言编译环境

C yum install gcc -y #安装gcc编译器 gcc --version #验证环境gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4) Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even f…...

【设计模式】(二)设计模式六大设计原则

一、 设计原则概述 设计模式中主要有六大设计原则&#xff0c;简称为SOLID &#xff0c;是由于各个原则的首字母简称合并的来(两个L算一个,solid 稳定的)&#xff0c;六大设计原则分别如下&#xff1a; ​ 1、单一职责原则&#xff08;Single Responsibitity Principle&#…...

go-zero官网

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性&#xff0c;经受了充分的实战检验。 go-zero官网&#xff1a;go-zero 缩短从需求到上线的距离...

Redis的应用场景以及常见问题(持续更新)

一、使用场景 1&#xff0c;在大型的秒杀库存扣减&#xff0c;app首页流量高峰&#xff0c;很容易将传统的关系型数据库&#xff08;mysql,oracle等&#xff09;给压垮 2&#xff0c;还有很多没必要持久化的数据&#xff0c;比如说短信验证码&#xff0c;点赞数等 3&#xff0c…...

前端添加压缩包内文件名称校验

1. tar包内文件名称校验 1. 读取tar包内所有的文件名称 export class TarReader {fileInfo: any[]buffer: string | ArrayBufferconstructor() {this.fileInfo []}readFile(file) {return new Promise(resolve > {const reader new FileReader()reader.onload event &g…...

redis02 安装

官网下载 传送门https://redis.io/download/#redis-downloads 安装Redis mac m1安装 下载你需要版本的软件包放到指定的目录下进行解压 cd 到解压好的redis目录 运行下面的命令进行编译测试 sudo make test 中途可能会提示你安装make工具&#xff0c;按提示安装即可&…...

#QT(QT时钟)

1.IDE&#xff1a;QTCreator 2.实验 3.记录 qtime&#xff08;qt的时间类&#xff09; qtimer&#xff08;qt的定时类&#xff09; 4.代码 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> // #include <QTimer&g…...

T-RAG:结合实体检测的增强检索生成模型

内容摘要&#xff1a; T-RAG是一种新的大型语言模型&#xff08;LLM&#xff09;应用框架&#xff0c;在保证数据隐私的同时&#xff0c;提高了对私有企业文档的问答系统性能。T-RAG通过结合已有的增强检索生成&#xff08;RAG&#xff09;框架、自定义的开源语言模型以及一个实…...

u-boot: NAND 驱动简介

文章目录 1. 前言2. NAND 初始化3. 访问 NAND 设备3.1 查看 NAND 设备信息3.1.1 查看 NAND 设备基本信息3.1.2 查看 NAND 设备 MTD 分区3.1.3 查看 NAND 设备坏块 3.2 NAND 擦除操作3.3 NAND 写操作3.4 NAND 读操作3.5 其它 NAND 操作 1. 前言 限于作者能力水平&#xff0c;本…...

史上最全的大数据开发八股文【自己的吐血总结】

自我介绍 我本硕都是双非计算机专业&#xff0c;从研一下开始学习大数据开发的相关知识&#xff0c;从找实习到秋招&#xff0c;我投递过100公司&#xff0c;拿到过10的offer&#xff0c;包括滴滴、字节、蚂蚁、携程、蔚来、去哪儿等大厂&#xff08;岗位都是大数据开发&#…...

数据库学习案例20240304-mysql数据库案例总结(碎片,统计信息)

1 表中的碎片 在InnoDB中删除行的时候&#xff0c;这些行只是被标记为“已删除”&#xff0c;而不是真正从物理存储上进行了删除&#xff0c;因而存储空间也没有真正被释放回收。InnoDB的Purge线程会异步地来清理这些没用的索引键和行。但是依然没有把这些释放出来的空间还给操…...

【小白友好】LeetCode 删除并获得点数

基础题 打家劫舍https://leetcode.cn/problems/house-robber/ 小白解法 删除nums[i]就会使得所有nums[i]-1和nums[i]1的值都消失&#xff0c;手写了几个&#xff0c;发现找来找去不方便&#xff0c;还不如先排个序&#xff0c;然后这样nums[i]-1和nums[i]和nums[i]1就能靠在…...

c#委托、lambda、事件

Lambda Lambda表达式是一种匿名函数&#xff0c;Lambda表达式通常以箭头“>”分隔左侧的输入和右侧的输出。 (parameter_list) > { statement_block } parameter_list 是由一个或多个参数组成的逗号分隔列表&#xff0c;每个参数都包括类型和名称&#xff0c;可以为空。…...

CVPR 2024人脸黑科技:3D头像重建如何用单张自拍搞定?附开源项目推荐

CVPR 2024单图3D头像重建技术实战&#xff1a;从算法原理到开源工具落地 当你在社交媒体上传自拍时&#xff0c;是否想过这张平面照片能瞬间转化为可360度旋转的数字化身&#xff1f;CVPR 2024最新研究成果正在让这个想象成为现实——无需专业设备&#xff0c;仅用普通手机拍摄…...

# 大数据开发面试题库

大数据开发岗面试必备&#xff1a;SQL 高频题、Spark 性能调优、数仓建模实战、项目经验梳理&#xff0c;覆盖初中级到高级岗位 &#x1f4cc; 前言 为什么面试总被问倒&#xff1f; 为什么项目经验说不清楚&#xff1f; 为什么调优问题总是泛泛而谈&#xff1f; 根本原因&am…...

安卓梦幻互通专用多开切换器|回合制手游多账号快速切换工具(附详细图文教程)

温馨提示&#xff1a;文末有联系方式工具核心定位&#xff1a;安全纯净&#xff0c;专注高效切换 本工具为专为安卓平台设计的轻量级多账号切换解决方案&#xff0c;全程绿色免安装插件&#xff0c;界面无任何广告干扰&#xff0c;严格遵循隐私规范——不访问、不读取、不上传任…...

攻克模电难点(一):多级放大电路与差动放大电路实战解析

1. 多级放大电路的设计基础 第一次接触多级放大电路时&#xff0c;我被各种耦合方式绕得头晕。直到在实验室烧坏几个三极管后&#xff0c;才真正理解其中的门道。多级放大电路的核心思想很简单&#xff1a;把多个单级放大电路像搭积木一样连接起来&#xff0c;但实际设计时却要…...

基于深度学习的FasterRCNN水下图像复原

项目概述&#xff1a;Waternet_FasterRCNN 本项目旨在结合深度学习技术进行水下图像的还原与分析&#xff0c;综合应用 WaterNet 和 Faster R-CNN 来完成以下功能&#xff1a; 水下图像还原&#xff1a;利用 WaterNet 修复和增强水下图像质量。色板检测与提取&#xff1a;通过 …...

实战指南:用快马平台生成基于openclaw的mac数据清洗工具

最近在做一个数据清洗的小工具&#xff0c;正好用到了openclaw这个库&#xff0c;发现它在macOS上处理数据特别顺手。今天就把整个实战过程记录下来&#xff0c;顺便分享下我是怎么用InsCode(快马)平台快速生成这个工具的。 项目背景与需求分析 手头有个客户提供的销售数据csv&…...

Fedora 40 虚拟机避坑指南:VMware 17.5 安装与内核降级实战(解决卡顿与兼容性问题)

Fedora 40 虚拟机性能优化全攻略&#xff1a;从内核调优到图形加速的深度实践 当你在VMware Workstation 17.5上运行Fedora 40时&#xff0c;是否遇到过系统卡顿、响应迟缓的问题&#xff1f;这并非个例——最新Linux发行版与虚拟化平台间的兼容性挑战&#xff0c;往往让开发者…...

ai赋能设计:超越传统ps软件下载,用快马打造你的智能图像创作助手

AI赋能设计&#xff1a;超越传统PS软件下载&#xff0c;用快马打造你的智能图像创作助手 传统PS软件下载后&#xff0c;设计师往往需要花费大量时间在重复性操作上。而现在&#xff0c;通过InsCode(快马)平台结合AI模型&#xff0c;我们可以打造一个全新的智能图像创作助手&am…...

Linux平台微信小程序开发终极指南:免费搭建完整开发环境

Linux平台微信小程序开发终极指南&#xff1a;免费搭建完整开发环境 【免费下载链接】wechat-web-devtools-linux 适用于微信小程序的微信开发者工具 Linux移植版 项目地址: https://gitcode.com/gh_mirrors/we/wechat-web-devtools-linux 在Linux系统上进行微信小程序开…...

快马平台十分钟速成:用AI大模型构建你的第一个智能客服对话Agent原型

最近在尝试用AI大模型构建智能客服对话系统&#xff0c;发现InsCode(快马)平台特别适合快速验证这类原型。花十分钟就能搭建出具备基础功能的对话agent&#xff0c;和大家分享下具体实现思路&#xff1a; 界面设计 先用HTML搭建基础框架&#xff0c;主要包含三个部分&#xff1…...