【深度学习笔记】Task1 神经网络计算


学习自: https://www.bilibili.com/video/BV1B7411L7Qt?p=1
之前跟的天池的一个学习视频,但是由于tensorflow版本问题,加上在代码讲解部分不够细致所以更换了课程。
强烈安利现在的课程,授课人是北京大学软件与微电子学院的曹健老师,整个课程深入浅出,对于代码部分介绍十分细致,很适合我这种刚想入门tensorflow的小白。第一次见弹幕一直在不由自主各种感叹老师教的真好的哈哈,确实讲的太好了,吐血安利!!!!

1.1人工智能三学派

通过神经网络可以使计算机具有感性思维
在这里插入图片描述
基于连接主义的神经网络设计过程
随着我们成长,神经网络连线上的权重发生了变化,有些线上权重增加,有些线上权重减弱
在这里插入图片描述

准备数据-》搭建网络-》优化参数-》应用网络在这里插入图片描述


1.2初认神经网络设计过程-鸢尾花分类问题

神经网络通过大量输入特征和标签构成数据集
在这里插入图片描述
输入:花瓣长、花瓣宽、花萼长、花萼宽
输出:三种类别
在这里插入图片描述
这是一个全连接网络,随机初始化w和b
在这里插入图片描述
输出的y中哪个得分最高,便将其归到哪一类,这里鸢尾花的实际标签为0但是根据输出结果被判断成了1,这是因为一开始w和b都是随机初始化的,因此需要用到损失函数来不断寻找最优值
在这里插入图片描述
目的:寻找一组w和b使得损失函数最小
在这里插入图片描述
从图中可以看出W=-1时候的损失函数最小
在这里插入图片描述

import tensorflow as tf 

#设置参数w的随机初始值为5,设定为可训练(即vaiable形式?)
w = tf.Variable(tf.constant(5, dtype=tf.float32))
#学习率
lr=0.2
#循环次数
epoch=40 

for epoch in range(epoch):
    with tf.GradientTape() as tape:#with结构到grad框起到了梯度计算的过程
        loss=tf.square(w+1) #损失函数定义为w+1的平方
    grads=tape.gradient(loss,w)#gradinet函数告知对谁求导
    
    w.assign_sub(lr*grads) #assign_sub做自减,即w-=
    print("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))

在这里插入图片描述

#可以发现w为-1时候损失函数值最小
#可以尝试更改lr,可以发现lr过小的时候迭代太慢,lr过大的时候一直在最优值跳动找不到最优值


1.3 张量生成

tensorflow中的tensor就是张量,是多维数组(多维列表),用阶来表示张量的维数,判断张量是几阶的可以看有几个方括号
在这里插入图片描述
tensorflow中的数据类型
在这里插入图片描述
图和创建一个张量tensor
在这里插入图片描述

import tensorflow as tf
a=tf.constant([1,5],dtype=tf.int64)
#直接打印a,会输出a的所有信息
print(a)

#打印a的数据类型
print(a.dtype) 

#打印a的形状
print(a.shape)

很多时候数据是用numpy给出的,可以通tf.convert_to_tensor(数据名,dtype=数据类型(可选))将其转化为tensor数据类型

import tensorflow as tf 
import numpy as np
a=np.arange(0,5)
b=tf.convert_to_tensor(a,dtype=tf.int64)
print(a) 
print(b)

结果为
[0 1 2 3 4]
tf.Tensor([0 1 2 3 4], shape=(5,), dtype=int64)

其他张量创建方法


#创建全为0的张量
tf.zeros(维度)

#创建全为1的张量
tf.ones(维度)

#创建全为指定值的张量
tf.fill(维度,指定值)

注意对于维度:
一维直接写个数
二维用【行,列】
多维用【m,j,k…】

a=tf.zeros([2,3])
b=tf.ones(4)
c=tf.fill([2,2],9)
print(a)
print(b)
print(c)

在这里插入图片描述
生成随机数

  • 生产正态分布的随机数,默认均值为0,标准差为1
tf.random.normal(维度,mean=均值,stddev=标准差)

如果希望生成的随机数更集中可以采用截断式正态分布,可以保证生成的数在两倍标准差之内

  • 生成截断式正态分布的随机数
tf.random.truncated_normal(维度,mean=均值,stddev=标准差)
  • 生成均匀分布随机数[minval,maxval),注意是前闭后开

tf.random.uniform(维度,minval=最小值,maxval=最大值)

在这里插入图片描述

d=tf.random.normal([2,2],mean=0.5,stddev=1)
print(d)
e=tf.random.truncated_normal([2,2],mean=0.5,stddev=1)
print(e)
f=tf.random.uniform([2,2],minval
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值