tensorflow2.0--实现前向传播

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets
import os

调整输出信息,只输出error

os.environ[‘TF_CPP_MIN_LOG_LEVEL’]=‘2’

获取数据

(x,y),_=datasets.mnist.load_data()

把x值从0-255调整为0-1 把np转换为tensor

x=tf.convert_to_tensor(x,dtype=tf.float32)/255.
y=tf.convert_to_tensor(y,dtype=tf.int32)
print(x.shape,y.shape,x.dtype,y.dtype)
print(tf.reduce_min(x),tf.reduce_max(x))
print(tf.reduce_min(y),tf.reduce_max(y))

设置一批数据为128

train_db=tf.data.Dataset.from_tensor_slices((x,y)).batch(128)
train_iter=iter(train_db)
sample=next(train_iter)
print(‘batch:’,sample[0].shape,sample[1].shape)

定义参数与学习率

w1=tf.Variable(tf.random.truncated_normal([784,256],stddev=0.1))
b1=tf.Variable(tf.zeros([256]))
w2=tf.Variable(tf.random.truncated_normal([256,128],stddev=0.1))
b2=tf.Variable(tf.zeros([128]))
w3=tf.Variable(tf.random.truncated_normal([128,10],stddev=0.1))
b3=tf.Variable(tf.zeros([10]))
lr=1e-3

循环数据集10次

for epoch in range(10):

#分批循环数据集
for step,(x,y) in enumerate(train_db):
    #把X转换为[batch,784]
    x=tf.reshape(x,[-1,28*28])
    #tensor提供的自动求导
    with tf.GradientTape() as tape:
        #x[128,784]->[128,256]
        h1=x@w1+tf.broadcast_to(b1,[x.shape[0],256])
        #非线性激励
        h1=tf.nn.relu(h1)
        #x[128,256]->[128,128]
        h2=h1@w2+b2
        h2=tf.nn.relu(h2)
        #输出[128,10]
        out=h2@w3+b3
        #对y进行one_hot转变为[128,10]
        y_onehot=tf.one_hot(y,depth=10)
        #损失函数:(y-y')**2/128
        loss=tf.square(y_onehot-out)
        loss=tf.reduce_mean(loss)
    #传入损失函数,参数
    grads=tape.gradient(loss,[w1,b1,w2,b2,w3,b3])
    #更新参数
    w1.assign_sub(lr*grads[0])
    b1.assign_sub(lr*grads[1])
    w2.assign_sub(lr*grads[2])
    b2.assign_sub(lr*grads[3])
    w3.assign_sub(lr*grads[4])
    b3.assign_sub(lr*grads[5])
    #输出损失值
    if step%100==0:
        print(epoch,step,'loss',float(loss))
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: yolov3是一种目标检测算法,使用TensorFlow 2.实现。它是一种基于深度学习的算法,可以在图像中检测出多个物体,并给出它们的位置和类别。TensorFlow 2.是一种流行的深度学习框架,可以帮助开发者快速构建和训练深度学习模型。使用TensorFlow 2.实现yolov3可以帮助我们更好地理解和应用深度学习算法。 ### 回答2: YOLOv3是一种流行的目标检测算法,它结合了实时性和准确性。TensorFlow 2.0是Google发布的一款深度学习框架,具有易用性和灵活性。 YOLOv3的基本原理是将输入图像分成多个网格,每个网格负责检测其中的多个目标。它使用卷积神经网络(CNN)来提取图像特征,并将预测分为三个尺度。通过为每个尺度计算不同大小的锚框(anchor)和类别概率,YOLOv3可以检测不同大小和类别的目标。此外,YOLOv3还使用了一种称为"Darknet53"的主干网络来提取图像特征。 TensorFlow 2.0提供了对YOLOv3目标检测算法的支持。它提供了易于使用的API,可以方便地构建和训练YOLOv3模型。此外,TensorFlow 2.0还提供了一系列方便的工具和函数,用于数据预处理、模型调优和结果可视化等。 使用TensorFlow 2.0构建YOLOv3模型的步骤包括:准备训练数据集、定义模型架构、训练模型和评估模型。首先,需要准备一个包含目标标签和边界框的数据集。然后,定义YOLOv3模型的网络架构,并根据数据集进行模型训练。训练完成后,可以使用训练好的模型对新图像进行目标检测,并评估模型的性能。 总之,YOLOv3与TensorFlow 2.0结合使用可以提供一个强大的目标检测解决方案。它们的结合使得构建、训练和评估YOLOv3模型变得更加简单和高效。 ### 回答3: YOLOv3是一种用于目标检测的深度学习算法,它在TensorFlow 2.0框架上得到了实现和应用。 YOLOv3,全称为You Only Look Once Version 3,是YOLO系列算法的最新版本。YOLO算法通过将目标检测任务转化为一个回归问题,在一次前向传播过程中直接预测图像中的边界框和类别信息,从而实现了实时目标检测。YOLOv3不仅提供了更高的检测精度,还引入了一些改进策略,例如多尺度检测以及使用不同大小的边界框预测目标。 TensorFlow 2.0是谷歌开发的一款用于构建和训练机器学习模型的深度学习框架。相比于之前的版本,TensorFlow 2.0提供了更加简洁易用的API,并且与Keras紧密集成,使得模型的搭建和训练变得更加方便。此外,TensorFlow 2.0还引入了Eager Execution机制,可以实时监控模型训练过程,加速了迭代的实验和调试。 在TensorFlow 2.0框架中实现YOLOv3算法可以借助于TensorFlow的强大计算能力和高效的神经网络API,方便地构建、训练和调优YOLOv3模型。同时,TensorFlow 2.0支持TensorBoard可视化工具,可以可视化模型结构和训练过程,便于理解和分析模型性能。此外,TensorFlow 2.0还提供了一系列丰富的工具和函数,例如数据增强、模型评估等,用于优化和完善YOLOv3算法的实现。 总之,YOLOv3算法的TensorFlow 2.0实现可以提供一个高效、简洁、易用的目标检测框架,帮助研究者和开发者更好地应用和推广YOLOv3算法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值