参数意思分别 是从a 中以概率P,随机选择3个, p没有指定的时候相当于是一致的分布
a1 = np.random.choice(a=5, size=3, replace=False, p=None)
非一致的分布,会以多少的概率提出来
a2 = np.random.choice(a=5, size=3, replace=False, p=[0.2, 0.1, 0.3, 0.4, 0.0])
在不改变矩阵的数值前提下修改矩阵的形状。
新数组的shape属性应该要与原来数组的一致,即新数组元素数量与原数组元素数量要相等。一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的另外一个shape属性值。
例子:
# z:
array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]])
# z.reshape(-1,2):
array([[1, 2],[3, 4],[5, 6],[7, 8],[9, 10],[11, 12],[13, 14],[16,16]])
placeholder,占位符,在tensorflow中类似于函数参数,运行时必须传入值。
dtype:数据类型。常用的是tf.float32,tf.float64等数值类型。
shape:数据形状。默认是None,就是一维值,也可以是多维,比如[2,3], [None, 3]表示列是3,行不定。
name:名称。
value:代表需要分解的矩阵变量(其实就是一个多维数组,一般为二维);
axis:指明对矩阵的哪个维度进行分解。axis=0按行分解,axis=1按列分解
例子:
c = tf.constant([[1,2,3], [4,5,6]])
d = tf.unstack(c, axis=0)
e = tf.unstack(c, axis=1)
d: array[[1,2,3], [4,5,6]]
e: array[[1,4], [2,5], [3,6]]
用于从“服从指定正态分布的序列”中随机取出指定个数的值。
shape: 输出张量的形状,必选
mean: 正态分布的均值,默认为0
stddev: 正态分布的标准差,默认为1.0
dtype: 输出的类型,默认为tf.float32
seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
name: 操作的名称
例子:
import tensorflow as tf
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
with tf.Session() as sess:sess.run(tf.global_variables_initializer())print(sess.run(w1))
# 结果:
[[-0.81131822 1.48459876 0.06532937][-2.4427042 0.0992484 0.59122431]]
input_tensor:待求和的tensor;
axis:指定的维,如果不指定,则计算所有元素的总和;
keepdims:是否保持原有张量的维度,设置为True,结果保持输入tensor的形状,设置为False,结果会降低维度,如果不传入这个参数,则系统默认为False;
name:操作的名称;
reduction_indices:在以前版本中用来指定轴,已弃用;
keep_dims:在以前版本中用来设置是否保持原张量的维度,已弃用;
例子:
tensor:
[[[ 1 2 3 4][ 5 6 7 8][ 9 10 11 12]],[[ 13 14 15 16][ 17 18 19 20][ 21 22 23 24]]]
[[1+13 2+14 3+15 4+16][5+17 6+18 7+19 8+20][9+21 10+22 11+23 12+24]]
依次类推,如果axis=1,那么求和结果shape是2*4,即:
[[ 1 + 5 + 9 2 + 6+10 3 + 7+11 4 + 8+12][13+17+21 14+18+22 15+19+23 16+20+24]]
如果axis=2,那么求和结果shape是2*3,即:
[[1+2+3+4 5+6+7+8 9+10+11+12][13+14+15+16 17+18+19+20 1+22+23+24]]
import tensorflow as tf
a = tf.constant([[-2,-4],[4,-2]])
with tf.Session() as sess:print(sess.lu(a)))
# 结果:
[[0,0],
[4,0]]
矩阵x与矩阵y的每个数相加
import tensorflow as tf
xstant([[1,2],[1,2]])
ystant([[1,1],[1,2]])
z=tf.add(x,y)
# 结果:
[[2,3],
[2,4]]
value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape。
ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。
strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]。
padding:和卷积类似,可以取’VALID’ 或者’SAME’,是否考虑边界。"SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑。
返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式
此函数是为了防止在训练中过拟合的操作,将训练输出按一定规则进行变换
Dropout原理简述:
tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层。
Dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概率p,让其停止工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。
x:输入
keep_prob:设置神经元被选中的概率,在初始化时keep_prob是一个占位符, keep_prob = tf.placeholder(tf.float32) 。tensorflow在run时设置keep_prob具体的值,例如keep_prob: 0.5
noise_shape:干扰形状。 此字段默认是None,表示第一个元素的操作都是独立,但是也不一定。比例:数据的形状是shape(x)=[k, l, m, n],而noise_shape=[k, 1, 1, n],则第1和4列是独立保留或删除,第2和3列是要么全部保留,要么全部删除。
seed:整形变量,随机数种子。
name:指定该操作的名字
_sentinel:本质上是不用的参数,不用填
logits:计算的输出,注意是为使用softmax或sigmoid的,维度一般是[batch_size, num_classes] ,单样本是[num_classes]。数据类型(type)是float32或float64;
labels:和logits具有相同的type(float)和shape的张量(tensor),即数据类型和张量维度都一致。
name:操作的名字,可填可不填。
输出:loss,shape:[batch_size,num_classes]
注意:它对于输入的logits先通过sigmoid函数计算,再计算它们的交叉熵,但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。output不是一个数,而是一个batch中每个样本的loss,所以一般配合tf.reduce_mea(loss)使用。
本文发布于:2024-02-05 01:01:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170720475961617.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |