机器学习(一)——熟悉tensorflow2.0

  • Post author:
  • Post category:其他


张量的生成

import tensorflow as tf
import numpy as np
###创建一个张量, 指定类型,判断是几维张量,直接数[的个数
# a = tf.constant([1, 5], dtype= tf.int64)
# print(a)
# print(a.dtype)
# print(a.shape)

###将numpy数据转换为tensor
# a = np.arange(0, 5)
# b = tf.convert_to_tensor(a, dtype=tf.int64)
# print(a)
# print(b)

#创建全为0的张量
# a = tf.zeros([2, 3])#指定维度
# #创建全为1的张量
# b = tf.ones(4)#只有一个数则表示1维
# #创建全为指定值的张量
# c = tf.fill([2, 3], 66)##指定维度与值
# print(a)
# print(b)
# print(c)

###生成正态分布的随机数,默认均值为0, 标准差为1
# d = tf.random.normal([2, 3], mean = 0.5, stddev = 1)##指定维度,均值,标准差
# ###生成截断式正态分布的随机数
# e = tf.random.truncated_normal([2, 3], mean = 0.5, stddev = 1)
# ##该函数保证生成随机数在均值正负2倍标准差之间,更集中
# print(d)
# print(e)

###生成均匀分布随机数
f = tf.random.uniform([2,2], minval = 0, maxval = 1)#指定维度,最小值,最大值
print(f)

常用函数1.

import tensorflow as tf
import numpy as np
# # a = tf.constant([1.0,2.0,3.0], dtype=tf.float16)
# print(a)
# ##强制tensor转换数据类型
# b = tf.cast(a, tf.int64)
# print(b)
# #计算该张量维度上的最小值
# print(tf.reduce_min(b))
# #同上计算最大值
# print(tf.reduce_max(b))

# a = tf.ones([3,2])
# b = tf.fill([2,3], 4.)
# print(tf.matmul(b, a))#矩阵乘法

# x = tf.constant([[1,2,3],
#                  [4,2,3]])
# print(x)
# ##求平均值
# print(tf.reduce_mean(x))
# ##
# print(tf.reduce_mean(x, axis=1))#指定维度求平均值,1表示按行求
#
# ###tf.Variable 将变量标记为可训练,被标记的函数会在反向传播中记录梯度信息。神经网络
# #训练中,常用该函数标记待训练参数
# w = tf.Variable(tf.random.normal([2,2], mean=0, stddev=1))

# a = tf.ones([1,3])
# b = tf.fill([1,3], 3.)
# print(a)
# print(b)
# print(tf.add(a,b))#加法
# print(tf.subtract(a,b))#减法
# print(tf.multiply(a,b))#乘法
# print(tf.divide(b,a))#除法 tf.matmul是矩阵乘法

# a = tf.fill([1,2], 3.)
# print(a)
# print(tf.pow(a, 3))#计算3次方
# print(tf.square(a))#计算平方
# print(tf.sqrt(a))#开方

###data.Dataset.from_tensor_slices的作用是把特征和标签配对,对numpy格式也适用
# features = tf.constant([12,23,15,16])
# lables = tf.constant([0,1,1,0])
# dataset = tf.data.Dataset.from_tensor_slices((features, lables))
# print(dataset)
# for item in dataset:
#     print(item)

###tf.GradientTape()能够对 loss = tf.pow(w, 2)的参数求导
# with tf.GradientTape() as tape:
#     w = tf.Variable(tf.constant(3.0))#tf.Variabble将w标记为可训练
#     loss = tf.pow(w, 2)
# grad = tape.gradient(loss, w)
# print(grad)

###enumerate枚举出每个元素并配上索引号
# seq = ['one', 'two', 'three']
# for i, element in enumerate(seq):
#     print(i, element)

###tf.one_hot将数据转换为独热码
# classes = 3
# lables = tf.constant([1, 0, 2])
# output = tf.one_hot(lables, depth=classes)#参数分别是带转换数据与几分类
# print(output)

###tf.nn.softmax函数能够使得张量里的数据符合概率分布,方便后续操作
# y = tf.constant([1.22, 3.04, -0.77])##假设只是标签所得的分数,不符合正态分布,用不了
# y_pro = tf.nn.softmax(y)
# print(y_pro)

###assign_sub实现自更新参数
# w = tf.Variable(100)##必须先标记为可更新才行
# w.assign_sub(1)#自减1
# print(w)

###np.argmax 根据axis返回 纵向与横向的最大值参数索引
# test = np.array([[1,2,3],[4,5,6],[7,8,9]])
# print(test)
# print(np.argmax(test, axis=0))
# print(np.argmax(test, axis=1))

常用函数2.

import tensorflow as tf
import numpy as np
# a = tf.constant([1,3,2,2,5])
# b = tf.constant([0,4,1,1,6])
# c = tf.where(tf.greater(a,b), a, b)#tf.where 若a > b则返回a, 否则返回b
# print("c:", c)

# rdm = np.random.RandomState(seed=1)#seed等于常数是使得每次产生的随机数相同
# a = rdm.rand()##不给参数,默认生成一个0到1之间的随机数
# b = rdm.rand(3,4)##生成一个二维的
# print(a)
# print(b)

# a = np.array([1,2,3])
# b = np.array([4,5,6])
# c = np.vstack((a,b))#纵向叠加
# d = np.hstack((a,b))#横向叠加
# print(c)
# print(d)

x,y = np.mgrid[1:3:1, 2:4:0.5]#1是起始, 到3不包含3,步长为1 后面的一样,返回一个二维的,列要保持一致
###.ravel()将其拉直为一维数组   c_将两个数组配成对输出
grid = np.c_[x.ravel(), y.ravel()]
print("x:", x)
print("y:", y)
print("grid:\n", grid)



版权声明:本文为qq_40739219原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。