个人笔记-TF2-iris-3-1

import tensorflow as tf
import numpy as np

#数据的准备,导入iris数据集
from sklearn.datasets import load_iris #这里导入的是sklearn数据库中的iris数据集,直接载入即可。
data = load_iris()

#本例只需要iris的特征与分类目标,只获取date和target
iris_target = data.target
iris_data = np. float32(data.data) #将其转化为float类型的列表(list)

#数据的处理
iris_target = np.float32(tf.keras.utils.to_categorical(iris_target, num_classes=3))#使用Keras自带的分散化工具对数据进行处理
iris_data = tf.data.Dataset.from_tensor_slices(iris_data).batch(50)#当生成的数据读取到内存中
iris_target = tf.data.Dataset.from_tensor_slices(iris_target).batch(50)#并准备以批量形式打印时

#模型
model = tf.keras.models.Sequential()#创建一个Sequential(顺序)模型,由多个网络层线性堆叠而成的。
# Add layers #之后根据需要逐级向其中添加不同的全连接层
model.add(tf.keras.layers.Dense(32, activation="relu"))
model.add(tf.keras. layers.Dense(64, activation="relu"))
model.add(tf.keras.layers.Dense(3, activation="softmax"))

#直接调用TensorFlow的优化器完成梯度函数的计算,这里用Adam优化器作为优化工具
opt = tf.optimizers.Adam(1e-3)

for epoch in range(1000):
    for data, lable in zip(iris_data, iris_target):
        with tf.GradientTape() as tape:


            #这里的损失函数采用的是交叉熵函数(softmax_crossentroy),使得数据计算分布能够最大限度地拟合目标值
            #CategoricalCrossentropy函数用于计算多分类问题的交叉熵
            logits = model(data) #固定写法
            loss_value = tf.reduce_mean(tf.keras.losses.categorical_crossentropy(y_true=lable, y_pred=logits)) #固定写法
            #首先通过模型计算出对应的值(内部采用前向调用函数),之后用tf.reduce_mean计算出损失函数

            #梯度更新函数是根据误差的幅度对数据进行更新的方法
            grads = tape. gradient(loss_value, model.trainable_variables)
            opt.apply_gradients(zip(grads, model.trainable_variables))
            #使用的模型直接获取参数的方式对数据进行不断更新而非人为指定

    print('Training loss is:', loss_value. numpy())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值