Tensorflow 学习与复习 Epoch_1 # tensorflow的一些函数方法

本文通过实例介绍了TensorFlow中tf.add和tf.nn.bias_add的区别,以及它们与numpy中相应操作的对比。同时列举了其他常用操作如tf.matmul、tf.random_uniform等,并探讨了广播机制在这些操作中的应用。
摘要由CSDN通过智能技术生成

1:

一个例子

import tensorflow as tf

import numpy as np


# 随机生成数据,100个点,x,y

x_data = np.float32(np.random.rand(2, 100))               #np.random.rand(d0,d1,...,dn) 随机生成n维矩阵

y_data = np.dot([0.100, 0.200], x_data) + 0.300          #np.dot() 矩阵相乘


# 构造一个线性模型

b = tf.Variable(tf.zeros([1]))                                              # tf.zero() 零值初始化()中的数据结构/变量

W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0) )      # tf.random_uniform()   随机初始化/变量

y = tf.matmul(W, x_data) + b                                          # tf.matmul() 矩阵相乘


# 最小化方差

loss = tf.reduce_mean(tf.square(y - y_data))                 # 定义loss函数

optimizer = tf.train.GradientDescentOptimizer(0.5)      # tf.train.GradientDescentOptimizer() 算法,以0.5的learning                                                                                         # rate 来 train

train = optimizer.minimize(loss)                                    # 求最小的loss 


# 初始化变量

init = tf.initialize_all_variables()


# 启动图(graph)

sess = tf.Session()

sess.run(init)


# 拟合平面

for step in range(1000):

    sess.run(init)

    if step%100 == 0:

        print(step, sess.run(W), sess.run(b))


2:

由上面例子,一些基础的常用的函数应该整理一下

同时在之后的学习中遇到新的函数都会整理进来:

numpy 中的:

np.float32() 

np.random.rand(d0d1...dn)    随机生成给定shape的矩阵

检查代码是否有错误或异常:class CosineAnnealingWarmbootingLR: def __init__(self, base_lr=0.00001, epochs=0, eta_min=0.05, steps=[], step_scale=0.8, lf=None, batchs=0, warmup_epoch=0, epoch_scale=1.0): # 初始化函数,接受一些参数 self.warmup_iters = batchs * warmup_epoch # 热身迭代次数 self.eta_min = eta_min # 最小学习率 self.iters = -1 # 当前迭代次数 self.iters_batch = -1 # 当前批次迭代次数 self.base_lr = base_lr # 初始学习率 self.step_scale = step_scale # 步长缩放因子 steps.sort() # 步长列表排序 self.steps = [warmup_epoch] + [i for i in steps if (i < epochs and i > warmup_epoch)] + [epochs] # 步长列表 self.gap = 0 # 步长间隔 self.last_epoch = 0 # 上一个 epoch self.lf = lf # 学习函数 self.epoch_scale = epoch_scale # epoch 缩放因子 def step(self, external_iter=None): # 学习率调整函数 self.iters = 1 # 当前迭代次数 if external_iter is not None: self.iters = external_iter iters = self.iters - self.warmup_iters # 当前迭代次数减去热身迭代次数 last_epoch = self.last_epoch # 上一个 epoch scale = 1.0 # 缩放因子 for i in range(len(self.steps)-1): if (iters <= self.steps[i+1]): self.gap = self.steps[i+1] - self.steps[i] # 步长间隔 iters = iters - self.steps[i] # 当前迭代次数减去当前步长 last_epoch = self.steps[i] # 上一个 epoch if i != len(self.steps)-2: self.gap *= self.epoch_scale # 如果不是最后一个步长,乘以 epoch 缩放因子 break scale *= self.step_scale # 缩放因子乘以步长缩放因子 if self.lf is None: self.base_lr= scale * self.base_lr * ((((1 - math.cos(iters * math.pi / self.gap)) / 2) ** 1.0) * (1.0 - self.eta_min) + self.eta_min) # 计算学习率 else: self.base_lr = scale * self.base_lr * self.lf(iters, self.gap) # 使用学习函数计算学习率 self.last_epoch = last_epoch # 更新上一个 epoch return self.base_lr # 返回学习率 def step_batch(self): # 批次学习率调整函数 self.iters_batch = 1 # 当前批次迭代次数 if self.iters_batch < self.warmup_iters: rate = self.iters_batch / self.warmup_iters # 计算学习率缩放因子 self.base_lr= self.base_lr * rate # 缩放学习率 return self.base_lr # 返回学习率 else: return None # 如果已经完成热身,返回 None
最新发布
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值