алгоритм тензорного потока
import tensorflow as tf
tf.add(a,b) #加法
tf.subtract(a,b) #减法
tf.multiply(x,y) #乘法
tf.div(x,y) #整除
tf.truediv(x,y) #浮点数除法
tf.mod(x,y) #取余
tf.reduce_mean()
Функция tf.reduce_mean используется для вычисления среднего значения тензорного тензора вдоль заданной числовой оси (размерность тензора), которая в основном используется для уменьшения размерности или вычисления среднего значения тензора (изображения).
接口为:
reduce_mean(input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None)
- Первый параметр input_tensor: входной тензор, размерность которого нужно уменьшить;
- Второй параметр оси: указанная ось, если не указана, вычисляется среднее значение всех элементов;
- Третий параметр keep_dims: следует ли уменьшить размерность, установите значение True, результат вывода сохранит форму входного тензора, установите значение False, результат вывода уменьшит размерность;
- Имя четвертого параметра: имя операции;
- Пятый параметр reduce_indices: использовался для указания осей в предыдущих версиях, устарел;
Например:
import tensorflow as tf
x = [[1,2,3],
[1,2,3]]
xx = tf.cast(x,tf.float32)
mean_all = tf.reduce_mean(xx, keep_dims=False)
mean_0 = tf.reduce_mean(xx, axis=0, keep_dims=False)
mean_1 = tf.reduce_mean(xx, axis=1, keep_dims=False)
with tf.Session() as sess:
m_a,m_0,m_1 = sess.run([mean_all, mean_0, mean_1])
print m_a # output: 2.0
print m_0 # output: [ 1. 2. 3.]
print m_1 #output: [ 2. 2.]
аналогичная функция
- tf.reduce_sum : вычислить совокупную сумму всех элементов в указанном направлении оси тензора;
- tf.reduce_max : вычислить максимальное значение каждого элемента в направлении указанной оси тензора;
- tf.reduce_all : вычислить логическую сумму (и операцию) каждого элемента в направлении указанной оси тензора;
- tf.reduce_any: вычислить логическое или (или операцию) каждого элемента в указанном направлении оси тензора;
np.linalg.norm() - норма
inalg=linear (линейный) + алгебра (алгебра), norm означает норму.
x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)
1. x: представляет матрицу (может быть одномерной)
2. ord: тип нормы
Трехвекторная норма
Есть три способа найти норму матрицы:
3. ось: тип обработки
4. Сохранение: следует ли сохранять двумерные характеристики матрицы
True означает сохранение двумерных характеристик матрицы, False наоборот.
пример:
import numpy as np
x = np.array([
[1, 2, 3],
[2, 4, 6]])
print "默认参数(矩阵2范数,不保留矩阵二维特性) :", np.linalg.norm(x)
print "矩阵2范数,保留矩阵二维特性:", np.linalg.norm(x, keepdims=True)
print "矩阵1范数(列和的最大值) :", np.linalg.norm(x, ord=1,keepdims=True)
print "矩阵2范数(求特征值,然后求最大特征值得算术平方根):", np.linalg.norm(x, ord=2, keepdims=True)
print "矩阵∞范数(行和的最大值) :", np.linalg.norm(x, ord=np.inf, keepdims=True)
print "矩阵每个行向量求向量的2范数:", np.linalg.norm(x, axis=1, keepdims=True)
print "矩阵每个列向量求向量的2范数:", np.linalg.norm(x, axis=0, keepdims=True)
print "矩阵每个行向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=1, keepdims=True)
print "矩阵每个列向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=0, keepdims=True)
Результат:
默认参数(矩阵2范数,不保留矩阵二维特性) : 8.36660026534
矩阵2范数,保留矩阵二维特性: [[8.36660027]]
矩阵1范数(列和的最大值) : [[9.]]
矩阵2范数(求特征值,然后求最大特征值得算术平方根): [[8.36660027]]
矩阵∞范数(行和的最大值) : [[12.]]
矩阵每个行向量求向量的2范数: [[3.74165739]
[7.48331477]]
矩阵每个列向量求向量的2范数: [[2.23606798 4.47213595 6.70820393]]
矩阵每个行向量求向量的1范数: [[ 6.]
[12.]]
矩阵每个列向量求向量的1范数: [[3. 6. 9.]]
Использованная литература: