Chisel(Constructing Hardware In a Scala Embedded Language)是UC Berkeley开发的一种开源硬件构造语言。
站长xddcore有话说:在我大二的时候,因为项目需要,接触了Chisel。在体验过后,我被它深深的吸引了。我幻想着它十年后的样子,充满希望。于是创建了这个博客,让更多人的了解Chisel,学习Chisel。

使用tensorflow2.1.0+Anaconda3(python3.7.4)从制作自己的TFRrecord数据集到训练神经网络,再到载入模型进行推断

内容纲要
Reading Time: < 1 minute

写在前面

tensorflow2.0是真的香!Anaconda是真的香!

大一寒假,开始折腾神经网络,之前买了不少相关书籍,虽说全部都看了一遍,但是感觉自己对一些细节还是理解得不是很清晰。(算了,该黑箱就黑箱)。高三数据有玩过tensorflow1.x,搭了个线性回归和全连接神经网络的mnist就没了。然后就去写开源固定翼飞控的程序了QAQ。(开源链接:https://gitee.com/pineconepi/PineconePi_Pilot)。然后本来计划着大一上学期在校时间玩玩,结果仍然是咕咕咕,因为各种事情鸽掉了。日常唠嗑结束了,下面开始正文

关于jetson nano +tensorflow 的更多代码分享见:

https://gitee.com/xddcore/Jetson_Nano

关于tensorflow,anaconda的安装,百度上一搜有一大把,我就不再重述一遍了,大家自行百度就行。

官方API文档链接(学tensorflow真的不用买书,看API文档就行了QAQ):

https://tensorflow.google.cn/api_docs/python/tf

制作自己的数据集

相信刚刚入门神经网络的小白都会有一个疑问:“虽然我自己跑了mnist,fashion mnist等数据集,但是我想有个自己的数据集啊QAQ。我要训练个神经网络,帮我找npy啊(说出了程序猿的心声)”。那么现在就围绕自己制作数据集开始。大家目前接触到的数据都是图像数据(大概分为两类,BMP(单色位,也就是黑白),RGB(也就是彩色,一般是RGB888))

想制作训练集,很简单,阅读完官方API文档后,我写出了如下程序:

import os 
import tensorflow as tf 
from PIL import Image  #注意Image,后面会用到
import matplotlib.pyplot as plt 
import numpy as np

i = 0
cwd='E:/AI/datasets/dogvs.cat/train/'#根目录
classes=['dog','cat'] #狗与猫
writer= tf.io.TFRecordWriter("train.tfrecords") #要生成的文件

for index,name in enumerate(classes):
    class_path = cwd + name + '/'
    for img_name in os.listdir(class_path): 
        img_path=class_path+img_name #每一个图片的地址

        img=Image.open(img_path)
        img= img.resize((128,128))
        img_raw=img.tobytes()#将图片转化为二进制格式
        example = tf.train.Example(
        features=tf.train.Features(
        feature={
            "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),
            'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))
        }
        )
        ) #example对象对label和image数据进行封装
        writer.write(example.SerializeToString())  #序列化为字符串
        i = i + 1
        print("已写入"+str(i)+"张图片")
writer.close()

上述程序功能很清楚,读取根目录下的标有分类文件夹,标签用0,1表示(0:狗,1:猫),然后将图片resize成128*128分辨率,然后转成String根据设置好的特征写入到TFRecord文件中,标签以int写入。(为啥要这样弄,别问我,问就是官方文档就说得像这样弄)。

用TFRecord的好处,以二进制编码,后面训练时加载速度会比较快(如果你是AMD 3990X+4路RTX 2080TI,当我没说)

数据集制作好了,现在开始进行训练

追《大主宰》去了,虽然自己不喜欢看小说,但是小说改编的电视剧是真的香QAQ。后面有空再更新

Share

xddcore

xddcore www.github.com/xddcore

You may also like...

发表回复

您的电子邮箱地址不会被公开。