• TensorFlow 2


    • 数据类型
      • Tf.constant: 常量
      • Tf.bool
      • Tf.string
      • Tf.Variable(tensor): 使得tensor可以求导
    • tensor属性
      • Tensor.device: 查看设备
      • Tensor.gpu(): 切换设备
      • Tensor.cpu(): 切换设备
      • Tensor.numpy(): 返回numpy数据
      • Tensor.shape: 类型
      • Tensor.ndim: 维度
      • Tf.rank(): 范围维度
      • Tf.cast(tensor, dtype): dtype转换
      • Tf.is_tensor(data): 判断是否为tensor
      • Tensor.trainable: 是否可以训练, 这里的tensor一般为tf.Variable
    • numpy与tensor转换
      • Tf.convert_to_tensor(numpy, dtype)
      • Tensor.numpy()
      • Int(tensor)/float(tensor): 如果tensor.shape == ()
    • 创建tensor
      • Tf.constant(data)
      • Tf.convert_to_tensor(numpy)
      • Tf.random.normal(shape, mean, stddev)
      • Tf.random.truncated_normal(shape, mean, stddev)
      • Tf.random.uniform(shape)
      • Tf.random.shuffle(idx): idx进行shuffle
    • 切片
      • numpy一样
      • 选择切片
        • Tf.gather(a, b): 根据b给出的数据取a对应下表的数据
        • Tf.gather_nd(): nd表示多个维度
        • Tf.boolean_mask(tensor, masks, axis)
        • Tf.where(condition, a, b): conditionTrue, a, 否则b
    • 维度变换
      • Tf.reshape: 不改变数据,但是改变理解方式
      • Tf.transpose: 修改数据,从而修改TensorShape
      • Tf.expand_dims(tensor, axis)axis处增加1维度
      • Tf.squeeze: 去掉维度为1的
      • Tf.tile(tensor, []): 第二个参数表示各个维度需要复制的个数
      • Tf.broadcast_to(tensor, target): 将tensor维度和target一样并返回
      • Tf.pad(tensor, [[a, b], [c, d]]): tensor各个维度进行padding,第一个[a, b]是第一个维度,左边填充a0,右边填充b0,第二个是第二个维度,左边填充c0,右边填充d0
    • 拼接
      • Tf.concat
      • Tf.stack
      • Tf.split:一般用于交叉验证
    • 统计
      • Tf.norm(tensor, ord, axis)
      • Tf.reduce_max/min/avg/sum
      • Tf.argmax
    • 排序
      • Tf.sort
      • Tf.argsort
      • Tf.top_k
    • 裁切值
      • Tf.maximum
      • Tf.minimum
      • Tf.clip_by_value
      • Tf.clip_by_norm:常用于解决梯度爆炸
      • Tf.clip_by_global_norm
    • 其他
      • Tf.meshgrid
    • 内建激活
      • Tf.sigmoid
      • Tf.nn.softmax
      • Tf.nn.relu
    • 内建损失函数
      • Tf.losses.MSE
      • Tf.losses.categorical_crossentropy(target_one_hot, pred)或者tf.losses.categorical_crossentropy(target_one_hot, logits, from_logits=True)推荐使用第二种方式

       

    • Tf.losses.BinaryCrossEntropy()(target_one_hot, pred)
    • 自动微分
      • `tf.GradientTape`上下文中会构建动态图,使用tape.gradient计算梯度,但是上下文中不记录=赋值的tensor,需要使用tensor.assign进行赋值,或者再tf.Variable

       

    • 数据集
      • Tf.data.Dataset.from_tensor_slice((x, y)).shuffle(1000000000).map(preprocess_func(x, y)).batch(32)
      • Tf.keras.datasets.mnist.load_data()
    • 构建模型
      • `net = tf.keras.layer.Dense(10)` => `net.build(input_shape=(None, 32))` 这样net才会有weightbias
      • `net.summary()`net.build之后调用,可以看net结构
    • Tensorboard 使用
      • `summary_writer = tf.summary.create_file_writer(log_dir)`
      • `with summary_writer.as_default():`中写`tf.summary.scalar`和`tf.summary.image`
    • Keras
      • `compile`
      • `fit`
      • `evaluate`
      • `predict`
      • 自定义layer和model
        • 重写init和call,继承Layer或者Model类
      • 保存模型
        • `model.save_weights(path)`和`model.load_weights(path)`
        • `model.save(path)`和`tf.keras.models.load_model(path)`
      • 正则化
        • 在使用layers时,有参数kernel_regularizer=keras.regularizer.l2(lamda)
    • 注意
      • keras进行fit的时候,没有采用eager模式,而是采用静态图的模式,因此在train_step中很多操作都受到了限制
      • 如果想keras.fit采用eager模式,在compile之后,使用`model.run_eagerly = True`即可切换到eager模式

       

  • 相关阅读:
    转贴:C语言链表基本操作
    硬盘上的一些算法小题目||and今天看了下林锐的书以及gdb调试 及一些变成算法小题目
    MFC入门 002 滚动条Scorllbar 数字控制框 Spin 进度条 Progress
    002 Windows数据类型 字符集
    001 Windows 简介
    MFC入门 001 Edit&Button&List&ComboBox
    iPads和iPones的Media Queries
    响应式网页设计
    chrome developer tool 调试技巧
    返回一个整型数组中最大子数组的和(02)
  • 原文地址:https://www.cnblogs.com/megachen/p/14836291.html
Copyright © 2020-2023  润新知