• tensorflow2使用中的一些问题


    from tensorflow import keras
    import tensorflow as tf
    import numpy as np
    print(tf.__name__,tf.__version__)
    print(keras.__name__, keras.__version__)
    
    tensorflow 2.0.0
    tensorflow_core.keras 2.2.4-tf
    
    # 定义常量
    t = tf.constant([[1., 2., 3.], [4., 5., 6.]])
    # 做索引操作
    print(t)
    # 取从第二例以后的数值
    print(t[:, 1:])
    # 只把第二列取出来,当做一个tensor
    print(t[..., 1])
    
    # 做算子操作
    # 加
    print(t+10)
    # 平方
    print(tf.square(t))
    # 乘转置
    print(t @ tf.transpose(t))
    
    tf.Tensor(
    [[1. 2. 3.]
     [4. 5. 6.]], shape=(2, 3), dtype=float32)
    tf.Tensor(
    [[2. 3.]
     [5. 6.]], shape=(2, 2), dtype=float32)
    tf.Tensor([2. 5.], shape=(2,), dtype=float32)
    tf.Tensor(
    [[11. 12. 13.]
     [14. 15. 16.]], shape=(2, 3), dtype=float32)
    tf.Tensor(
    [[ 1.  4.  9.]
     [16. 25. 36.]], shape=(2, 3), dtype=float32)
    tf.Tensor(
    [[14. 32.]
     [32. 77.]], shape=(2, 2), dtype=float32)
    
    # 进行numpy 操作
    print(t.numpy())
    print(np.square(t))
    np_t = np.array([[1., 2., 3.], [4., 5., 6.]])
    print(tf.constant(np_t))
    
    [[1. 2. 3.]
     [4. 5. 6.]]
    [[ 1.  4.  9.]
     [16. 25. 36.]]
    tf.Tensor(
    [[1. 2. 3.]
     [4. 5. 6.]], shape=(2, 3), dtype=float64)
    
    # 0维, 一个具体的数
    t = tf.constant(3.1415)
    print(t)
    
    tf.Tensor(3.1415, shape=(), dtype=float32)
    
    # string
    t = tf.constant("tesorflow")
    print(t)
    print(tf.strings.length(t))
    print(tf.strings.unicode_decode(t, "UTF8"))
    
    # string array
    t = tf.constant(["tensorflow", "pytorch", "咖啡"])
    print(tf.strings.length(t, unit="UTF8_CHAR"))
    
    
    tf.Tensor(b'tesorflow', shape=(), dtype=string)
    tf.Tensor(9, shape=(), dtype=int32)
    tf.Tensor([116 101 115 111 114 102 108 111 119], shape=(9,), dtype=int32)
    tf.Tensor([10  7  2], shape=(3,), dtype=int32)
    
    # ragged tensor
    r = tf.ragged.constant([[11, 12], [21, 22, 23], [], [41]])
    print(r)
    print(r[1:3])
    print(r.to_tensor())
    # 拼接操作
    r2 = tf.ragged.constant([[51, 52], [], [72, 72]])
    print(tf.concat([r, r2], axis = 0))
    # axis=1 拼接时, 需要维数相同
    r3 = tf.ragged.constant([[13,14], [15], [], [42, 43]])
    print(tf.concat([r, r3], axis = 1))
    
    <tf.RaggedTensor [[11, 12], [21, 22, 23], [], [41]]>
    <tf.RaggedTensor [[21, 22, 23], []]>
    tf.Tensor(
    [[11 12  0]
     [21 22 23]
     [ 0  0  0]
     [41  0  0]], shape=(4, 3), dtype=int32)
    <tf.RaggedTensor [[11, 12], [21, 22, 23], [], [41], [51, 52], [], [72, 72]]>
    <tf.RaggedTensor [[11, 12, 13, 14], [21, 22, 23, 15], [], [41, 42, 43]]>
    
    # sparse tensor 大部分位置为0,少部分
    s = tf.SparseTensor(indices = [[0, 1], [1, 0], [2, 3]],
                       values = [1., 2., 3.],
                       dense_shape = [3, 4])
    print(s)
    print(tf.sparse.to_dense(s))
    
    # 操作
    s2 = s * 2.0
    # 没有+法操作  s3 = s + 1
        
    s4 = tf.constant([[10., 20.],
                    [30., 40.],
                    [50., 60.],
                    [70., 80.]])
    print(tf.sparse.sparse_dense_matmul(s, s4))
    # 如果indices排序不对,使用tf.sparse.reorder进行排序
    
    SparseTensor(indices=tf.Tensor(
    [[0 1]
     [1 0]
     [2 3]], shape=(3, 2), dtype=int64), values=tf.Tensor([1. 2. 3.], shape=(3,), dtype=float32), dense_shape=tf.Tensor([3 4], shape=(2,), dtype=int64))
    tf.Tensor(
    [[0. 1. 0. 0.]
     [2. 0. 0. 0.]
     [0. 0. 0. 3.]], shape=(3, 4), dtype=float32)
    tf.Tensor(
    [[ 30.  40.]
     [ 20.  40.]
     [210. 240.]], shape=(3, 2), dtype=float32)
    
    # 变量 variables
    v = tf.Variable([[1., 2., 3.], [4., 5., 6.]])
    print(v)
    print(v.value())
    print(v.numpy())
    
    # 只能用assign 不能用=
    v.assign(2 * v)
    print(v.numpy())
    v[0, 1].assign(42)
    print(v.numpy())
    v[1].assign([7., 8., 9.])
    print(v.numpy())
    
    <tf.Variable 'Variable:0' shape=(2, 3) dtype=float32, numpy=
    array([[1., 2., 3.],
           [4., 5., 6.]], dtype=float32)>
    tf.Tensor(
    [[1. 2. 3.]
     [4. 5. 6.]], shape=(2, 3), dtype=float32)
    [[1. 2. 3.]
     [4. 5. 6.]]
    [[ 2.  4.  6.]
     [ 8. 10. 12.]]
    [[ 2. 42.  6.]
     [ 8. 10. 12.]]
    [[ 2. 42.  6.]
     [ 7.  8.  9.]]
    

    多GPU

    mirrored_strategy = tf.distribute.MirroredStrategy()
    with mirrored_strategy.scope():
        model = xxxnet()
        model.compile(optimizer=tf.keras.optimizers.Adam(lr=1e-4), loss='mse', loss_weights=[1])
    model.fit(      train_generator,        epochs=100,        steps_per_epoch=5,        verbose=1,        callbacks = callbacks)
    # 需要注意只能用fit,不能用fit_genertor,不过现在fit也支持generator了
    
  • 相关阅读:
    [书目20160620]自媒体时代,我们该如何做营销
    [转]Oracle Form 触发器执行顺序
    [转]在ASP.NET开发中容易忽略的2个小问题 Cookie乱码存取异常 和 iframe弹框的login跳转
    [转]菜鸟程序员之Asp.net MVC Session过期异常的处理
    [转]Asp.net MVC使用Filter解除Session, Cookie等依赖
    [转]异步、多线程、任务、并行编程之一:选择合适的多线程模型
    [转]Membership 到 .NET4.5 之 ASP.NET Identity
    [转]前后端分离开发模式下后端质量的保证 —— 单元测试
    [转]Asp.net MVC 利用PartialView 构造自定义菜单
    [转]Membership三步曲之入门篇
  • 原文地址:https://www.cnblogs.com/flyuz/p/11770485.html
Copyright © 2020-2023  润新知