目录

* 创建Tensor <https://www.cnblogs.com/nickchen121/p/10840266.html#创建tensor>
* numpy, list <https://www.cnblogs.com/nickchen121/p/10840266.html#numpy-list>
* numpy <https://www.cnblogs.com/nickchen121/p/10840266.html#numpy>
* list <https://www.cnblogs.com/nickchen121/p/10840266.html#list>
* zeros, ones, fill
<https://www.cnblogs.com/nickchen121/p/10840266.html#zeros-ones-fill>
* zeros <https://www.cnblogs.com/nickchen121/p/10840266.html#zeros>
* ones <https://www.cnblogs.com/nickchen121/p/10840266.html#ones>
* fill <https://www.cnblogs.com/nickchen121/p/10840266.html#fill>
* random <https://www.cnblogs.com/nickchen121/p/10840266.html#random>
* 打乱idx后,a和b的索引不变
<https://www.cnblogs.com/nickchen121/p/10840266.html#打乱idx后a和b的索引不变>
* constant <https://www.cnblogs.com/nickchen121/p/10840266.html#constant>
* loss计算 <https://www.cnblogs.com/nickchen121/p/10840266.html#loss计算>
* 无bias的loss <https://www.cnblogs.com/nickchen121/p/10840266.html#无bias的loss>
创建Tensor
* from numpy, list * zeros, ones, fill * random # if big dimension, random
initial * constant * Application
numpy, list

numpy
import numpy as np import tensorflow as tf tf.convert_to_tensor(np.ones([2,
3])) <tf.Tensor: id=0, shape=(2, 3), dtype=float64, numpy= array([[1., 1., 1.],
[1., 1., 1.]])> tf.convert_to_tensor(np.zeros([2, 3])) <tf.Tensor: id=2,
shape=(2, 3), dtype=float64, numpy= array([[0., 0., 0.], [0., 0., 0.]])>
list
tf.convert_to_tensor([1, 2]) <tf.Tensor: id=4, shape=(2,), dtype=int32,
numpy=array([1, 2], dtype=int32)> tf.convert_to_tensor([1, 2.]) <tf.Tensor:
id=6, shape=(2,), dtype=float32, numpy=array([1., 2.], dtype=float32)>
tf.convert_to_tensor([[1], [2.]]) <tf.Tensor: id=8, shape=(2, 1),
dtype=float32, numpy= array([[1.], [2.]], dtype=float32)>
zeros, ones, fill

zeros
tf.zeros([]) <tf.Tensor: id=10, shape=(), dtype=float32, numpy=0.0>
tf.zeros([1]) <tf.Tensor: id=14, shape=(1,), dtype=float32, numpy=array([0.],
dtype=float32)> tf.zeros([2, 2]) <tf.Tensor: id=18, shape=(2, 2),
dtype=float32, numpy= array([[0., 0.], [0., 0.]], dtype=float32)> tf.zeros([2,
3, 3]) <tf.Tensor: id=22, shape=(2, 3, 3), dtype=float32, numpy= array([[[0.,
0., 0.], [0., 0., 0.], [0., 0., 0.]], [[0., 0., 0.], [0., 0., 0.], [0., 0.,
0.]]], dtype=float32)> a = tf.constant([0]) tf.zeros_like(a) #
等同于tf.zeros(a.shape) <tf.Tensor: id=25, shape=(1,), dtype=int32,
numpy=array([0], dtype=int32)>
ones
tf.ones(1) <tf.Tensor: id=29, shape=(1,), dtype=float32, numpy=array([1.],
dtype=float32)> tf.ones([]) <tf.Tensor: id=31, shape=(), dtype=float32,
numpy=1.0> tf.ones([2]) <tf.Tensor: id=35, shape=(2,), dtype=float32,
numpy=array([1., 1.], dtype=float32)> tf.ones([2, 3]) <tf.Tensor: id=39,
shape=(2, 3), dtype=float32, numpy= array([[1., 1., 1.], [1., 1., 1.]],
dtype=float32)> a = tf.constant([0]) tf.ones_like(a) # # 等同于tf.ones(a.shape)
<tf.Tensor: id=44, shape=(1,), dtype=int32, numpy=array([1], dtype=int32)>
fill
tf.fill([2, 2], 0) <tf.Tensor: id=48, shape=(2, 2), dtype=int32, numpy=
array([[0, 0], [0, 0]], dtype=int32)> tf.fill([2, 2], 0) <tf.Tensor: id=52,
shape=(2, 2), dtype=int32, numpy= array([[0, 0], [0, 0]], dtype=int32)>
tf.fill([2, 2], 1) <tf.Tensor: id=56, shape=(2, 2), dtype=int32, numpy=
array([[1, 1], [1, 1]], dtype=int32)> tf.fill([2, 2], 9) <tf.Tensor: id=60,
shape=(2, 2), dtype=int32, numpy= array([[9, 9], [9, 9]], dtype=int32)>
random
# 正态分布,均值为1,方差为1 tf.random.normal([2, 2], mean=1, stddev=1) <tf.Tensor: id=67,
shape=(2, 2), dtype=float32, numpy= array([[1.0804566, 0.9318387], [1.0620257,
0.6907253]], dtype=float32)> tf.random.normal([2, 2]) <tf.Tensor: id=74,
shape=(2, 2), dtype=float32, numpy= array([[-0.06452972, 0.05704789], [
0.82857376, 0.71619517]], dtype=float32)> # 截断的正态分布,
tf.random.truncated_normal([2, 2], mean=0, stddev=1) <tf.Tensor: id=81,
shape=(2, 2), dtype=float32, numpy= array([[ 0.19161457, -0.820383 ], [
0.43668088, -0.3798696 ]], dtype=float32)>

如下图所示为截断正态分布,截掉红色部分,对新的正态分布重新采样。因为sigmoid的和新的正态分布不冲突的地方的区域,对于sigmoid函数来说是近似于平滑的直线,梯度为0,因此会有梯度消失。


# 均匀分布 tf.random.uniform([2, 2], minval=0, maxval=1) <tf.Tensor: id=89,
shape=(2, 2), dtype=float32, numpy= array([[0.01481438, 0.15071952], [0.5599004
, 0.59821343]], dtype=float32)> tf.random.uniform([2, 2], minval=0, maxval=100,
dtype=tf.int32) <tf.Tensor: id=102, shape=(2, 2), dtype=int32, numpy=
array([[51, 9], [10, 14]], dtype=int32)>
打乱idx后,a和b的索引不变
idx = tf.range(10) idx = tf.random.shuffle(idx) idx <tf.Tensor: id=113,
shape=(10,), dtype=int32, numpy=array([0, 8, 4, 9, 6, 7, 5, 2, 1, 3],
dtype=int32)> a = tf.random.normal([10, 784]) b = tf.random.uniform([10],
maxval=10, dtype=tf.int32) b <tf.Tensor: id=134, shape=(10,), dtype=int32,
numpy=array([1, 8, 1, 2, 4, 6, 2, 7, 4, 5], dtype=int32)> a = tf.gather(a, idx)
b = tf.gather(b, idx) b <tf.Tensor: id=147, shape=(10,), dtype=int32,
numpy=array([1, 8, 2, 2, 6, 1, 7, 4, 4, 5], dtype=int32)>
constant
tf.constant(1) <tf.Tensor: id=149, shape=(), dtype=int32, numpy=1>
tf.constant([1]) <tf.Tensor: id=151, shape=(1,), dtype=int32, numpy=array([1],
dtype=int32)> tf.constant([1, 2.]) <tf.Tensor: id=153, shape=(2,),
dtype=float32, numpy=array([1., 2.], dtype=float32)> tf.constant([[1, 2], [3.,
2]]) <tf.Tensor: id=156, shape=(2, 2), dtype=float32, numpy= array([[1., 2.],
[3., 2.]], dtype=float32)>
loss计算

无bias的loss
out = tf.random.uniform([4, 10]) out <tf.Tensor: id=171, shape=(4, 10),
dtype=float32, numpy= array([[0.67733276, 0.2267617 , 0.21761227, 0.28679788,
0.68864655, 0.21349418, 0.5646602 , 0.8294822 , 0.22094071, 0.20246148],
[0.7940483 , 0.86402774, 0.78399694, 0.80085063, 0.01357341, 0.11889946,
0.89162886, 0.755934 , 0.8058628 , 0.40188062], [0.115659 , 0.30951428,
0.39866602, 0.5358803 , 0.9163326 , 0.47557557, 0.9397205 , 0.3110628 ,
0.49839914, 0.34321547], [0.5563061 , 0.78829396, 0.52705276, 0.29077685,
0.35033226, 0.9630101 , 0.338771 , 0.6301584 , 0.7393383 , 0.7073529 ]],
dtype=float32)> y = tf.range(4) y = tf.one_hot(y, depth=10) y <tf.Tensor:
id=188, shape=(4, 10), dtype=float32, numpy= array([[1., 0., 0., 0., 0., 0.,
0., 0., 0., 0.], [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 1., 0., 0.,
0., 0., 0., 0., 0.], [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.]], dtype=float32)>
loss = tf.keras.losses.mse(y, out) loss <tf.Tensor: id=195, shape=(4,),
dtype=float32, numpy=array([0.19016443, 0.4096697 , 0.31698173, 0.43206215],
dtype=float32)> loss = tf.reduce_mean(loss) loss <tf.Tensor: id=200, shape=(),
dtype=float32, numpy=0.3372195>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信