张量tf.Tensor

  • tf.Tensor(id, shape=(), dtype, value, graph, name)

常量

  • a = tf.constant(2)
  • a = tf.constant(2, name= ‘a’)

  • a.numpy() 输出张量的值

Shape

  • a.get_shape() 输出shape值

    前面已经赋值了,后面name属性有什么用呢? 答:前面的赋值变量用于输入输出,保存模型时以name为准

张量操作

  • tf.add/sub/and/or/matmul

这些都是1版本的用法。2版本直接+-x /

变量tf.Variable

tf.Variable(name, shape, dtype, value)

  • s = tf.Variable(2,name=’scalar’)
  • m = tf.Variable([[0,1],[2,3]],name = “matrix”)
  • W = tf.Variable(tf.zeros([784,10]))

tf.assign()

  • a = tf.Variable(1)
  • b = (a + 2) 3 等价于 b = (assibn_add(2)) 3

image.png

数据类型

image.png

变量跟踪

image.png
m.variables 会输出所有的变量

tf.data

使用简单的结构构建复杂的数据流。
image.png
创建数据集,高效pipeline

创建数据集

  1. tf.data.Dataset.from_tensors(tensors) #作为一个tensor输入
  2. tf.data.Dataset.from_tensor_slices(tensors) # 作为多个
  3. tf.data.Dataset.from_generator(gen,output_types,output_shape)

读取数据集

  1. # 包含多个txt文件的行
  2. tf.data.TextLineDataset(filenames)
  3. # 来自一个或多个二进制的固定长度记录的数据集
  4. tf.data.FixedLengthRecordDataset(filenames)
  5. # 包含多个TFRecord文件的记录
  6. tf.data.TFRecordDataset(filenames)
  7. # 还有多种方法未列举,如csv文件

数据迭代

  1. dataset = tf.data.Dataset.from_tensor_slices([])
  2. for e in dataset:
  3. print(e.numpy())
  4. it = iter(dataset)
  5. print(next(it).numpy())

数据集合并

  1. dataset3 = tf.data.Dataset.zip((dataset1,dataset2))

取batch

  1. batched_dataset = dataset.batch(4)

随机打乱

  1. dataset = dataset.shuffle(buffer_size=10) # 参数是随机打乱程度。1不打乱,最大为样本量

常用数据集

  1. tf.keras.datasets
  2. tf.keras.datasets.xx
  3. xx.load_data()

image.png

模型保存

  • 保存checkpoints(只保存权重)
  • 保存整个模型

    存取checkpoints

    1. model.save_weights('checkpoint')
    2. # 获得最新的检查点
    3. ckpt = tf.train.latest_checkpoint('./tf_ckpts/')
    4. # 读取到模型
    5. model.restore(ckpt)

    保存整个模型

    1. from keras.models import load_model
    2. model.save('my_model.h5')
    3. model = load_model('my_model.h5')

    可视化,1版本

    1. Tensorboard
    2. tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir,histogram_freq=1)
    3. # 命令行输入
    4. tensorboard --logdir