龙曲良 Tensorflow —— 随机梯度下降(自用)-4

这篇具有很好参考价值的文章主要介绍了龙曲良 Tensorflow —— 随机梯度下降(自用)-4。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、梯度下降

二、激活函数及其梯度

2.1 最简单的阶梯激活函数

2.2 sigmoid / logistic(tf.sigmoid)

2.3 tanh(tf.tanh)

2.4 ReLU(tf.nn.relu)

三、损失函数及其梯度

四、单、多输出感知机梯度

4.1 单层感知机

4.2 多层感知机

4.3  链式法则

4.4 多层感知机梯度 

4.5 Himmelblau函数优化

4.6 FashionMNIST实战

4.7 TensorBoard可视化

4.7.1 Installation

4.7.2 Curves

4.7.3 Image Visualization


一、梯度下降

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       梯度就是所有偏微分一起综合考虑

       如下图感受梯度,梯度方向代表函数值增大的方向,梯度的模(长度)代表函数增大的速度(速率)

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       那么梯度如何帮助我们搜索 loss 的最小值呢?

       也就是把当前的参数值,沿梯度相反的方向行进更新 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       来看一个实例:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

y 的输出out 是None,因为 y=x*w 没有被包在 tf.GradientTape()

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       但上述的方法只能求解一次,求解完就会自动释放掉相关的资源

       如果要调用两次的话,就需要调用 persistent 的功能

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

二阶求导:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

代码:chapter03:TF02-2nd_derivative.py

二、激活函数及其梯度

2.1 最简单的阶梯激活函数

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       由上图可知,这个z变量必须>0,才会激活,不然就处于一个睡眠状态,不会输出一个电平值,这就是 激活函数 激活 的来源

       但这个激活函数存在一个最终的概念,就是不可导的,不能直接使用梯度下降的方法进行优化,在当时使用了一个启发式搜索的方法来求解这样一个单层感知器的最优解的情况

2.2 sigmoid / logistic(tf.sigmoid)

       为了解决单层感知器的激活函数,激活阶梯函数不可导的情况,科学家提出了一个连续光滑的函数,就是 sigmoid / logistic

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

但是到正无穷和负无穷时,导数接近于0,此时  θ 长时间得不到更新,就出现了 梯度离散 现象

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

2.3 tanh(tf.tanh)

在 RNN 中用的比较多

可以由 sigmoid 转化来,x轴平面压缩 1/2 即 2x,y轴放大2倍即(0, 2),再减1

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

2.4 ReLU(tf.nn.relu)

全名:整型的线性单元 Rectified Linear Unit

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       小于0时梯度为0,大于0时梯度为1,所以向后传播时梯度计算起来非常方便,不会放大也不会缩小,保持梯度不变,很大程度上减少了出现梯度离散和梯度爆炸的情况

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

leaky_relu 是小于0的返回一个 kx,k很小;大于0时就是 k=1 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

三、损失函数及其梯度

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习梯度:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习求导:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

四、单、多输出感知机梯度

4.1 单层感知机

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

4.2 多层感知机

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习要求的就是 E(loss)对 wjk的导数

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

4.3  链式法则

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

4.4 多层感知机梯度 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

4.5 Himmelblau函数优化

       该函数是一个二维的形式,有四个角,最低点都是0

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习改变初始点,会找到4个不同的最低点

4.6 FashionMNIST实战

代码:文章来源地址https://www.toymoban.com/news/detail-601189.html

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics


# 预处理函数
def preprocess(x, y):

    x = tf.cast(x, dtype=tf.float32) / 255.
    y = tf.cast(y, dtype=tf.int32)

    return x, y

(x, y), (x_test, y_test) = datasets.fashion_mnist.load_data()
#print(y[0]) # 9
print(x.shape, y.shape)

batchsz = 128
db = tf.data.Dataset.from_tensor_slices((x, y)) # 构造数据集
# 它可以将一个 Tensor 切片成多个 Tensor,并将其作为数据集返回。
# 可以使用该函数对数据进行预处理,然后使用 TensorFlow 的数据集 API 进行操作。
db = db.map(preprocess).shuffle(10000).batch(batchsz)

db_test = tf.data.Dataset.from_tensor_slices((x_test, y_test)) # 构造数据集
db_test = db_test.map(preprocess).batch(batchsz)

db_iter = iter(db)
sample = next(db_iter)
print('batch:', sample[0].shape, sample[1].shape)

model = Sequential([
    layers.Dense(256, activation=tf.nn.relu), # [b, 784] => [b, 256]
    layers.Dense(128, activation=tf.nn.relu), # [b, 256] => [b, 128]
    layers.Dense(64, activation=tf.nn.relu),  # [b, 128] => [b, 64]
    layers.Dense(32, activation=tf.nn.relu),  # [b, 64] => [b, 32]
    layers.Dense(10)   # [b, 32] => [b, 10], 330 = 32*10 + 10
])
model.build(input_shape=[None, 28*28])
model.summary()
# 给个优化器, w = w - lr * grad
optimizer = optimizers.Adam(lr=1e-3)

def main():

    # 完成数据的前向传播
    for epoch in range(30):

        for step, (x, y) in enumerate(db): # 60000 / 128 = 468.75

            # x: [b, 28, 28]
            # y: [b]
            x = tf.reshape(x, [-1, 28*28])

            with tf.GradientTape() as tape:
                # [b, 784] => [b, 10]
                logits = model(x)
                y_onehot = tf.one_hot(y, depth=10)
                # b
                loss_mse = tf.reduce_mean(tf.losses.MSE(y_onehot, logits))
                loss_ce = tf.losses.categorical_crossentropy(y_onehot, logits, from_logits=True)
                loss_ce = tf.reduce_mean(loss_ce)
                # 如果输入给 bce 的是一个 logit 值(值域范围 [-∞, +∞] ),则应该设置 from_logits=True
                # 如果输入给 bce 的是一个概率值 probability (值域范围 [0, 1] ),则应该设置为 from_logits=False

            grads = tape.gradient(loss_ce, model.trainable_variables) # 计算梯度
                                                            # model.trainable_variables返回所有可训练参数
            optimizer.apply_gradients(zip(grads, model.trainable_variables)) # zip是把两个变量相同标号的拼到一起
                                                            # 梯度在前,参数在后
            if step % 100 == 0:
                print(epoch, step, 'loss:', float(loss_ce), float(loss_mse))

        # test
        total_correct = 0
        total_num = 0
        for x, y in db_test:
            # x: [b, 28, 28]
            # y: [b]
            x = tf.reshape(x, [-1, 28 * 28])
            # [b, 10]
            logits = model(x)
            # logits => prob, [b, 10]
            prob = tf.nn.softmax(logits, axis=1)
            # [b, 10] => [b], int64
            pred = tf.argmax(prob, axis=1)
            pred = tf.cast(pred, dtype=tf.int32)
            # pred: [b]
            # y: [b]
            # correct: [b], True: equal, False: not equal
            correct = tf.equal(pred, y)
            correct = tf.reduce_sum(tf.cast(correct, dtype=tf.int32)) # 这里的 correct 是一个 Tensor

            total_correct += int(correct) # 每个 for 的相加
            total_num += x.shape[0]

        acc = total_correct / total_num
        print(epoch, 'test acc:', acc)

# 这里用的是 loss_ce 的 loss,也可以试试 loss_mse 的 loss
# 两个好处:
# (1)有5层,比2、3层多了很多参数
# (2)用了 adam 的优化器
# 最后 acc 在 0.892,fashionmnist 比 mnist 要复杂

if __name__ == '__main__':
    main()

4.7 TensorBoard可视化

       想要查看过程中任意部分,直接 print 的话,如果是 deep net 那么会有很多参数和图片,很难看出过程部分 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

       在 tensorlfow 中这个监视工具叫 TensorBoard

       在 pytorch 中,叫 Visdom

       但这两个并不局限使用,可以互相用 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

4.7.1 Installation

       新版 tensorflow 好像会自动安装,没有直接 pip 安装

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习       工作原理:cpu 会运行程序给磁盘的某个目录写程序,里面就会更新包含数据如loss,讲目录告诉监听器listen,监听器就会监听这个目录,这样打开web网页,listen有数据就会传到web显示

4.7.2 Curves

(1)新建目录(2)建立日志(3)数据喂给这个日志summary 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

进入命令行cmd: 

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

进入监听目录,然后输入

tensorboard --logdir logs

就可以在 6006 端口查看,给的地址不对的话,就进入 localhost:6006

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习

4.7.3 Image Visualization

step就是横轴,loss那里就是纵轴,'loss'就是名称

喂一个标量的数据:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习喂一个图片的数据:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

喂多张图片:

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习但是这样没有组合起来显示,是一个一个显示的,浪费了大量的资源 

要想组合起来,tensorflow没有提供这个工具,需要我们自己写一个函数,这里是 image_grid

龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习龙曲良 Tensorflow —— 随机梯度下降(自用)-4,Tensorflow,tensorflow,深度学习,人工智能,python,机器学习 

chapter03 - TF06 

代码:

# 可视化
# 打开ip地址:localhost:6006
import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

import tensorflow as tf
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics
import datetime
from matplotlib import pyplot as plt
import io

assert tf.__version__.startswith('2.')


def preprocess(x, y):
    x = tf.cast(x, dtype=tf.float32) / 255.
    y = tf.cast(y, dtype=tf.int32)

    return x, y


def plot_to_image(figure):
    """Converts the matplotlib plot specified by 'figure' to a PNG image and
    returns it. The supplied figure is closed and inaccessible after this call."""
    # Save the plot to a PNG in memory.
    buf = io.BytesIO()
    plt.savefig(buf, format='png')
    # Closing the figure prevents it from being displayed directly inside
    # the notebook.
    plt.close(figure)
    buf.seek(0)
    # Convert PNG buffer to TF image
    image = tf.image.decode_png(buf.getvalue(), channels=4)
    # Add the batch dimension
    image = tf.expand_dims(image, 0)
    return image


def image_grid(images):
    """Return a 5x5 grid of the MNIST images as a matplotlib figure."""
    # Create a figure to contain the plot.
    figure = plt.figure(figsize=(10, 10))
    for i in range(25):
        # Start next subplot.
        plt.subplot(5, 5, i + 1, title='name')
        plt.xticks([])
        plt.yticks([])
        plt.grid(False)
        plt.imshow(images[i], cmap=plt.cm.binary)

    return figure


batchsz = 128
(x, y), (x_val, y_val) = datasets.mnist.load_data()
print('datasets:', x.shape, y.shape, x.min(), x.max())

db = tf.data.Dataset.from_tensor_slices((x, y))
db = db.map(preprocess).shuffle(60000).batch(batchsz).repeat(10)

ds_val = tf.data.Dataset.from_tensor_slices((x_val, y_val))
ds_val = ds_val.map(preprocess).batch(batchsz, drop_remainder=True)

network = Sequential([layers.Dense(256, activation='relu'),
                      layers.Dense(128, activation='relu'),
                      layers.Dense(64, activation='relu'),
                      layers.Dense(32, activation='relu'),
                      layers.Dense(10)])
network.build(input_shape=(None, 28 * 28))
network.summary()

optimizer = optimizers.Adam(lr=0.01)

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
log_dir = 'logs/' + current_time
summary_writer = tf.summary.create_file_writer(log_dir)

# get x from (x,y)
sample_img = next(iter(db))[0]
# get first image instance
sample_img = sample_img[0]
sample_img = tf.reshape(sample_img, [1, 28, 28, 1])
with summary_writer.as_default():
    tf.summary.image("Training sample:", sample_img, step=0)

for step, (x, y) in enumerate(db):

    with tf.GradientTape() as tape:
        # [b, 28, 28] => [b, 784]
        x = tf.reshape(x, (-1, 28 * 28))
        # [b, 784] => [b, 10]
        out = network(x)
        # [b] => [b, 10]
        y_onehot = tf.one_hot(y, depth=10)
        # [b]
        loss = tf.reduce_mean(tf.losses.categorical_crossentropy(y_onehot, out, from_logits=True))

    grads = tape.gradient(loss, network.trainable_variables)
    optimizer.apply_gradients(zip(grads, network.trainable_variables))

    if step % 100 == 0:
        print(step, 'loss:', float(loss))
        with summary_writer.as_default():
            tf.summary.scalar('train-loss', float(loss), step=step)

            # evaluate
    if step % 500 == 0:
        total, total_correct = 0., 0

        for _, (x, y) in enumerate(ds_val):
            # [b, 28, 28] => [b, 784]
            x = tf.reshape(x, (-1, 28 * 28))
            # [b, 784] => [b, 10]
            out = network(x)
            # [b, 10] => [b] 
            pred = tf.argmax(out, axis=1)
            pred = tf.cast(pred, dtype=tf.int32)
            # bool type 
            correct = tf.equal(pred, y)
            # bool tensor => int tensor => numpy
            total_correct += tf.reduce_sum(tf.cast(correct, dtype=tf.int32)).numpy()
            total += x.shape[0]

        print(step, 'Evaluate Acc:', total_correct / total)

        # print(x.shape)
        val_images = x[:25]
        val_images = tf.reshape(val_images, [-1, 28, 28, 1])
        with summary_writer.as_default():
            tf.summary.scalar('test-acc', float(total_correct / total), step=step)
            tf.summary.image("val-onebyone-images:", val_images, max_outputs=25, step=step)

            val_images = tf.reshape(val_images, [-1, 28, 28])
            figure = image_grid(val_images)
            tf.summary.image('val-images:', plot_to_image(figure), step=step)

到了这里,关于龙曲良 Tensorflow —— 随机梯度下降(自用)-4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [机器学习] 1. 梯度下降 Gradient Descent 与随机梯度下降 Stochastic Gradient Descent

    ML Theory 太魔怔了!!!!! 从微积分课上我们学到 对一个 (mathscr C^2) 函数,其二阶泰勒展开的皮亚诺余项形式 [f(bm w\\\') = f(bm w) + langle nabla f(bm w), bm w\\\' - bm wrangle + o(|bm w\\\' - bm w|)] 这说明只要 (bm w\\\') 和 (bm w) 挨得足够接近,我们就可以用 (f(bm w) + langle nabla f(

    2024年02月08日
    浏览(55)
  • 机器学习--决策树、线性模型、随机梯度下降

    🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+    目录  一、决策树 二、线性模型 三、随机梯度下降 决策树(decision

    2024年02月03日
    浏览(44)
  • 随机梯度下降算法SGD(Stochastic gradient descent)

    SGD是什么 SGD是Stochastic Gradient Descent(随机梯度下降)的缩写,是深度学习中常用的优化算法之一。SGD是一种基于梯度的优化算法,用于更新深度神经网络的参数。它的基本思想是,在每一次迭代中,随机选择一个小批量的样本来计算损失函数的梯度,并用梯度来更新参数。这

    2024年02月11日
    浏览(37)
  • 机器学习之SGD(Stochastic Gradient Descent,随机梯度下降)

    SGD(Stochastic Gradient Descent,随机梯度下降)是深度学习中最基本的优化算法之一。它是一种迭代式的优化方法,用于训练神经网络和其他机器学习模型。以下是关于SGD优化器的重要信息: 基本原理 :SGD的基本思想是通过不断调整模型参数来最小化损失函数。它每次迭代时从

    2024年02月11日
    浏览(43)
  • 【Sklearn】基于随机梯度下降算法的数据分类预测(Excel可直接替换数据)

    随机梯度下降(Stochastic Gradient Descent,SGD)是一种优化算法,用于训练模型的参数以最小化损失函数。在分类任务中,SGD也可以用于训练分类模型。下面是SGD分类预测的模型原理和数学公式的概述。 模型原理 SGD分类器是基于线性模型的分类器,它使用随机梯度下降优化算法

    2024年02月12日
    浏览(37)
  • 深度学习之梯度下降算法

    0.1 学习视频源于:b站:刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容,若有错误欢迎指正! 1 线性模型 1.1 通过简单的线性模型来举例:   1.2 如图,简单的一个权重的线性模型,首先通过随机取w的值来找到与true line重合的w,其中通过MSE来判断w取值是否

    2024年02月15日
    浏览(43)
  • 深度学习基础之梯度下降

    梯度下降是一种用于最小化(或最大化)损失函数的优化算法。它是机器学习和深度学习中的一个关键概念,通常用于调整学习算法中的参数。 梯度下降背后的核心思想是迭代调整参数以最小化损失函数。它的工作原理是计算损失函数相对于每个参数的梯度,并在减少损失函

    2024年02月09日
    浏览(37)
  • 【深度学习笔记】动量梯度下降法

    本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下: 神经网络和深度学习 - 网易云课堂 也欢迎对神经网

    2024年02月15日
    浏览(44)
  • 现代C++中的从头开始深度学习:【4/8】梯度下降

            在本系列中,我们将学习如何仅使用普通和现代C++编写必须知道的深度学习算法,例如卷积、反向传播、激活函数、优化器、深度神经网络等。         在这个故事中,我们将通过引入 梯度下降 算法来介绍数据中 2D 卷积核的拟合。我们将使用卷积和 上一个故事

    2024年02月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包