tf2.0之动手学深度学习
文章平均质量分 86
Zero_to_zero1234
Be objective
展开
-
简谈一维卷积
二维卷积在tf中是tf.layers.conv2d(),而一维卷积:tf.layers.conv1d()1、一维卷积和二维卷积的区别二维卷积就不赘述了,很多博客写的很好,自己之前也马虎写过一篇,主要讲一下一维卷积。先讲一下二维卷积和一维卷积的区别,二维卷积是将一个特征图在width和height两个方向进行滑动窗口操作,对应位置进行相乘求和;而一维卷积卷积略有不同,其卷积核也是一个二维的,只是在width(lenth)单方向上进行滑动窗口并相乘求和。来自:博客还有有一篇博客写得比较好博客:ht原创 2020-07-31 18:20:12 · 24904 阅读 · 9 评论 -
Failed to convert object of type class 'tuple' to Tensor错误
Failed to convert object of type <class ‘tuple’> to Tensor. Contents: (None, -1, 128). Consider casting elements to a supported type.tensorflow中此类错误一般是 Tensor计算中,使用 x.shape[i]错误使用导致,正确的使用应该使用tf...原创 2020-04-29 17:45:32 · 10806 阅读 · 7 评论 -
tf.keras.layers.LSTMCell和tf.keras.layers.LSTM
tf.keras.layers.LSTMCell 在整个时间序列输入中处理一个步骤,而 tf.keras.layer.LSTM处理整个序列tf.keras.layers.LSTMCellAPI简介:tf.keras.layers.LSTMCell(units, activation=‘tanh’, recurrent_activation=‘sigmoid’, use_bias=True...原创 2020-04-22 10:15:11 · 9853 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(10.9 编码器—解码器(seq2seq))
原创 2020-04-14 18:30:33 · 530 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(6.10 双向循环神经网络)
原创 2020-04-14 17:57:35 · 193 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(6.9 深度循环神经网络)
这个在概念上很好理解,就是叠加几层,每层输出作为后层输入,注意与双向循环神经网络的区别就好了原创 2020-04-14 17:50:59 · 205 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(6.8 长短期记忆(LSTM))
注意一点就是: sigmoid函数和tanh函数有所区别:sigmoid将一个实数输入映射到[0,1]范围内 tanh函数将一个实数输入映射到[-1,1]范围内不过两者都有所优劣,Relu激活函数可以极大地加快收敛速度,相比tanh函数,收敛速度可以加快6倍...原创 2020-04-14 17:43:50 · 503 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(6.7 门控循环单元(GRU))
核心代码如下:# 从零实现 GRU,其实与 RNN 的主要区别在于有门的设计# 确定哪些是需要初始化模型参数:# 核心公式就是一下 四个# Rt=σ(XtWxr+Ht−1Whr+br), Zt=σ(XtWxz+Ht−1Whz+bz), H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh), Ht=Zt⊙Ht−1+(1−Zt)⊙H~t# 初始化参数有:Ht-1 的维...原创 2020-04-14 17:42:33 · 472 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(6.2 循环神经网络)
区别在于,dense层就没有 隐藏状态,而RNN由于隐藏状态的存在,使得前后时间序列产生了联系原创 2020-04-14 17:41:14 · 242 阅读 · 0 评论 -
keras中Input的shape及batch_shape
Input(shape=None,batch_shape=None,name=None,dtype=K.floatx(),sparse=False,tensor=None)shape: 形状元组(整型),不包括batch size。for instance, shape=(32,) 表示了预期的输入将是一批32维的向量。batch_shape: 形状元组(整型),包括了batch size...原创 2020-04-05 00:05:26 · 5041 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(6.6 循环神经网络的反向传播)
原创 2020-03-31 00:16:33 · 220 阅读 · 0 评论 -
jay chou歌词 文本下载数据下载
周杰伦歌词数据下载:链接: https://pan.baidu.com/s/1kxHWX4w15amjnKXBrjfE2w 提取码: hkr9原创 2020-03-31 14:12:42 · 1708 阅读 · 1 评论 -
动手学深度学习学习笔记tf2.0版(6.1 语言模型)
原创 2020-03-21 17:59:55 · 306 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.11 残差网络(ResNet))
from tensorflow.keras import layers,activations# 自定义残差层class Residual(tf.keras.layers.Layer): def __init__(self, num_channels, use_1x1conv=False, strides=1, **kwargs): super().__init__...原创 2020-03-18 17:41:24 · 1032 阅读 · 0 评论 -
卷积的三种模式full, same, valid以及padding的same, valid
转载一个最清晰的讲解方式:https://zhuanlan.zhihu.com/p/62760780转载 2020-03-18 17:26:07 · 1312 阅读 · 0 评论 -
使用Matplotlib子图展示卷积神经网络中间特征图层
import tensorflow as tfimport matplotlib as plt# 获取一组数据X = next(iter(train_db))[0][0]def show(X, k,i, name): print(X.shape) X = tf.expand_dims(X, axis=-1) # 将每个图转换为 200 * 200的像素,但这个不是...原创 2020-03-17 10:49:01 · 621 阅读 · 0 评论 -
Matplotlib子图相关操作
# 准备画布fig = plt.figure()# 添加子图 2 * 2 的第1张图ax1 = fig.add_subplot(221)# 添加子图 2 * 2 的第2张图ax2 = fig.add_subplot(222)# 添加子图 2 * 2 的第3张图ax3 = fig.add_subplot(223)# 添加子图 2 * 2 的第4张图ax4 = fig.add_sub...原创 2020-03-17 10:42:11 · 462 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.10 批量归一化)
batch_normalization就是在batch方向上,做样本归一化原创 2020-03-17 00:15:28 · 792 阅读 · 0 评论 -
Tensorflow 2.x自定义网络层的方法及其注意事项
转载记录一下:https://zhuanlan.zhihu.com/p/86886620转载 2020-03-16 12:51:51 · 330 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.9 含并行连结的网络(GoogLeNet))
模型结构仔细理解一下import tensorflow as tfprint(tf.__version__)for gpu in tf.config.experimental.list_physical_devices('GPU'): tf.config.experimental.set_memory_growth(gpu, True)class Inception(tf...原创 2020-03-15 23:58:28 · 443 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.8 网络中的网络(NiN))
import tensorflow as tfprint(tf.__version__)for gpu in tf.config.experimental.list_physical_devices('GPU'): tf.config.experimental.set_memory_growth(gpu, True)def nin_block(num_channels, ...原创 2020-03-15 22:50:15 · 304 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.7 使用重复元素的网络(VGG))
import tensorflow as tfimport osprint(tf.__version__)VGG块的组成规律是:连续使用数个相同的填充为1、窗口形状为 3×3 的卷积层后接上一个步幅为2、窗口形状为 2×2 的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。我们使用vgg_block函数来实现这个基础的VGG块,它可以指定卷积层的数量num_convs和输...原创 2020-03-14 23:28:25 · 402 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.5 卷积神经网络(LeNet))
data_format:一个字符串,其值为 channels_last(默认值)或者 channels_first。它表明输入的维度的顺序。此参数的目的是当模型从一种数据格式切换到另一种数据格式时保留权重顺序。channels_last 对应着尺寸为 (batch, …, channels) 的输入,而 channels_first 对应着尺寸为 (batch, channels, …) 的...原创 2020-03-14 17:19:58 · 349 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.6 深度卷积神经网络(AlexNet))
import tensorflow as tfprint(tf.__version__)import osfor gpu in tf.config.experimental.list_physical_devices('GPU'): tf.config.experimental.set_memory_growth(gpu, True)# 定义网络net = tf....原创 2020-03-14 17:18:22 · 306 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.4 池化层)
def pool2d(X, pool_size, mode='max'): p_h, p_w = pool_size Y = tf.zeros((X.shape[0] - p_h + 1, X.shape[1] - p_w +1)) Y = tf.Variable(Y) for i in range(Y.shape[0]): for j in...原创 2020-03-11 13:06:43 · 452 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.3 多输入通道和多输出通道)
# 输入形状为 h * w * channeldef corr2d(X, K): h, w = K.shape if len(X.shape) == 2: X = tf.reshape(X, (X.shape[0],1)) Y = tf.Variable(tf.zeros((X.shape[0] - h + 1, X.shape[1] - w +1, X....原创 2020-03-11 02:07:32 · 1188 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.2 填充和步幅)
def comp_conv2d(conv2d, X): X = tf.reshape(X,(1,) + X.shape + (1,)) Y = conv2d(X) #input_shape = (samples, rows, cols, channels) return tf.reshape(Y,Y.shape[1:3])conv2d = tf.keras....原创 2020-03-09 13:20:21 · 325 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(5.1 卷积神经网络之卷积层)
卷积部分推荐之前的一篇博客,内容很全面构造了一个 1 * 2 的卷积核[1, -1],用于边缘检测Y_hat = conv2d(X)for i in range(10): with tf.GradientTape(watch_accessed_variables=False) as g: g.watch(conv2d.weights[0]) ...原创 2020-03-08 23:17:14 · 361 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(4.5 GPU计算)
日常使用过程中往往需要涉及 GPU 进行模型训练和推理,及指定 GPU进行计算,那么:经常地,我会这么使用定义要使用的 gpu_id 和 需要消耗的显存:import osos.environ['CUDA_VISIBLE_DEVICES'] = '0, 1'# 获取物理gpu, cpu对象gpus = tf.config.experimental.list_physical_dev...原创 2020-03-08 17:49:51 · 534 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(4.4 读取和存储tensor及模型参数)
当然,这种保存权重的方式有时候不是最佳方式,有时候需要保留整个模型及优化器等各种信息,有时候部署可能只需要保存前馈计算的参数等各种,需要的请进一步扩展,在这里不做过多介绍...原创 2020-03-08 17:43:39 · 544 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(4.4 自定义层)
原创 2020-03-08 17:30:49 · 326 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(4.1 自定义模型)
让我们回顾一下在 3.10节(“多层感知机的简洁实现”)一节中含单隐藏层的多层感知机的实现方法。我们首先构造Sequential实例,然后依次添加两个全连接层。其中第一层的输出大小为256,即隐藏层单元个数是256;第二层的输出大小为10,即输出层单元个数是10。我们在上一章的其他 节中也使用了Sequential类构造模型。这里我们介绍另外一种基于tf.keras.Model类的模型构造方法:它...原创 2020-03-08 17:02:08 · 493 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(4.2 模型参数的访问、初始化和共享)
class Linear(tf.keras.Model): def __init__(self): super().__init__() self.d1 = tf.keras.layers.Dense( units=10, activation=None, kernel_initi...原创 2020-03-06 00:35:17 · 967 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(3.15 数值稳定性和模型初始化)
原创 2020-03-01 23:32:49 · 174 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(3.14 正向传播、反向传播和计算图)
注意: S和L的来源部署时候只采用前向传播的网络要快一些的其中一个重要原因原创 2020-03-01 23:12:13 · 284 阅读 · 0 评论 -
【tensorflow】训练网络loss突然出现nan的情况
在训练中遇到 loss 突然变成 nan 的情况:转载一篇博客:尝试在MNIST上跑AlexNet,然而发现loss一直下降的时候,在某一时刻突然出现了nan。在tensorboard上显示如下:可以看到在最后面的accuarcy突然下降。一开始百思不得其解,原因其实在于交叉熵中的 y_truth * log(y_predict)log(0) * 0的时候, 则会出现NaN,一旦出...转载 2020-03-01 22:54:18 · 1545 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(3.13 丢弃法)
注意: 保留的部分以 1 / 1 - p 的尺度 拉伸原创 2020-02-29 23:37:36 · 255 阅读 · 0 评论 -
动手学深度学习学习笔记tf2.0版(3.12 权重衰减)
特别的,keras中以 kernel_regularizer=tf.keras.regularizers.l2(0.04) 来使用参数正则化原创 2020-02-26 23:52:25 · 367 阅读 · 0 评论 -
categorical_crossentropy 和 sparse_categorical_crossentropy的区别
在 tf.keras 中,有两个交叉熵相关的损失函数 tf.keras.losses.categorical_crossentropy 和 tf.keras.losses.sparse_categorical_crossentropy 。其中 sparse 的含义是,真实的标签值 y_true 可以直接传入 int 类型的标签类别,即sparse不需要one-hot,而另一个需要。具体而言:lo...原创 2020-02-26 23:23:27 · 9727 阅读 · 0 评论 -
tf2.0中自定义模型类、自定义层、自定义损失函数及评估指标
有些时候 tf.keras 中的接口封装可能不满足我们的要求,那么就需要进行自定义设计,1、自定义模型Keras 模型以类的形式呈现,我们可以通过继承 tf.keras.Model 这个 Python 类来定义自己的模型。在继承类中,我们需要重写 __init__() (构造函数,初始化)和 call(input) (模型调用)两个方法,同时也可以根据需要增加自定义的方法。class M...转载 2020-02-26 11:09:23 · 4994 阅读 · 0 评论