人工智能实践——一个基础神经网络源码分析

本文详细介绍了神经网络实践中涉及的随机数生成,包括np.random模块的不同函数,以及张量处理、梯度计算、独热编码等核心概念。通过实例展示了tf.data.Dataset.from_tensor_slices的使用,以及张量的修改和梯度下降的实现。此外,还讨论了张量的广播原则和独热编码在神经网络中的应用。
摘要由CSDN通过智能技术生成
x_data = datasets.load_iris().data
y_data = datasets.load_iris().target

datasets.load_iris()返回的是<class ‘sklearn.utils.Bunch’>
我们可以利用type(datasets.load_iris())得到属性。姑且这里可以理解为类吧。

np.random.seed(116)#随机数种子
np.random.shuffle(x_data)#打乱顺序,因为原数组y值按序排列,会影响模型拟合性
np.random.seed(116)
np.random.shuffle(y_data)

扩展:np.random随机模块

1:np.random.rand(3,2) 返回[3,2]的随机数

array([[ 0.14022471, 0.96360618], #random
[ 0.37601032, 0.25528411], #random
[ 0.49313049, 0.94909878]]) #random

2:a=np.random.randn(3,4) 随机正态分布的样本【normal distribution】

[[-0.33048377 0.23360005 -0.90960278 -1.71455775]
[ 0.15790672 -1.75625325 1.44082303 -0.27947681]
[ 1.96307815 -0.15549447 1.43778136 0.07263787]]

3:返回随机整数np.random.randint(low,high,size=(a,b))
一位参数:0-high)
二位参数:[low,high)
三位参数

a=np.random.randint(3,9, size=(2,4))
[[7 5 5 5]
[7 5 3 3]]

b=np.random.randint(1, size=(3,6))
[[0 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]]

4:返回0-1的随机浮点数 np.random.random([3,4])
a=2*np.random.random([3,4])+3

[[3.80825656 4.19216891 3.13883402 4.80575456]
[3.24359894 3.58765032 3.5430586 4.72078944]
[3.87530062 4.50962233 4.2954225 3.22771614]]

5:np.random.seed()
设置的seed()值仅一次有效
np.random.seed(100)
a=np.random.rand(3,4)
b=np.random.rand(3,4)
print(a)
print(b)

[[0.54340494 0.27836939 0.42451759 0.84477613]
[0.00471886 0.12156912 0.67074908 0.82585276]
[0.13670659 0.57509333 0.89132195 0.20920212]]
[[0.18532822 0.10837689 0.21969749 0.97862378]
[0.81168315 0.17194101 0.81622475 0.27407375]
[0.43170418 0.94002982 0.81764938 0.33611195]]

会发现两次随机数结果不一样
6:np.random.shuffle(y_data) 随机打乱顺序

x_train= x_data[:-30]
y_train= y_data[:-30]
x_test=x_data[-30:]
y_test=y_data[-30:]

-30代表倒数第30个 [:-30]代表从0到倒数第30个
[-30:]代表倒数第30个到最后一个
x[rows,columns] 逗号前是对行操作,后是对列操作 。

x_train = tf.cast(x_train, tf.float32)
x_test=tf.cast(x_test,tf.float32)

强制类型转换,转为tf.float32

#batch为分组,即每一组分为Batch个

train_db = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(32)
test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(10)

扩展: tf.data.Dataset.from_tensor_slices

将x_train和y_train,x_test和y_test相互关联【from_tensor_slices函数切分传入的 Tensor 的第一个维度,生成相应的 dataset】
关联x_train和y_train关联后为Dataset,无法正常输出【可以理解为很多块batch】打印可以发现
有两种输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值