In [1]:
import numpy as np
import tensorflow as tf

In [2]:
sess = tf.Session()

In [6]:
# 行列の作成
# diag() を使って対角行列を作成する
identity_matrix = tf.diag([1., 1., 1.])

A = tf.truncated_normal([2,3])
B = tf.fill([2,3], 5.0)
C = tf.random_uniform([3,2])
D = tf.convert_to_tensor(np.array(
        [[1., 2., 3.], [-3., -7., -1.], [0., 5., -2.]]))

print(sess.run(identity_matrix))
print(sess.run(A))
print(sess.run(B))
print(sess.run(C))
print(sess.run(C))


[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]
[[ 0.81793803  0.14026143 -0.5221256 ]
 [ 0.54047596  0.32200354 -1.91863704]]
[[ 5.  5.  5.]
 [ 5.  5.  5.]]
[[ 0.71715319  0.54948401]
 [ 0.22132802  0.98632121]
 [ 0.59904301  0.1972127 ]]
[[ 0.56647182  0.28676152]
 [ 0.63380563  0.46999168]
 [ 0.25952923  0.18393302]]

In [9]:
# 行列の加算、減算
print(sess.run(A+B))

print(sess.run(B-B))


[[ 5.00110579  5.73777151  4.1363349 ]
 [ 4.88877535  3.34225225  6.88383532]]
[[ 0.  0.  0.]
 [ 0.  0.  0.]]

In [12]:
# 行列の乗算
print(sess.run(tf.matmul(B, identity_matrix)))

# 転置の場合、transposeを使う
print(sess.run(tf.matmul(identity_matrix, B, transpose_a=True, transpose_b=True)))


[[ 5.  5.  5.]
 [ 5.  5.  5.]]
[[ 5.  5.]
 [ 5.  5.]
 [ 5.  5.]]

In [14]:
# 転置用の関数もある
print(sess.run(tf.transpose(B)))


[[ 5.  5.]
 [ 5.  5.]
 [ 5.  5.]]

In [15]:
# 行列式
print(sess.run(tf.matrix_determinant(D)))


-38.0

In [16]:
# 逆行列式
print(sess.run(tf.matrix_inverse(D)))


[[-0.5        -0.5        -0.5       ]
 [ 0.15789474  0.05263158  0.21052632]
 [ 0.39473684  0.13157895  0.02631579]]

In [18]:
# コレスキー分解
print(sess.run(tf.cholesky(identity_matrix)))


[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

In [19]:
# 固有値と固有ベクトル
eigenvalues, eigenvectors = sess.run(tf.self_adjoint_eig(D))
print(eigenvalues)
print(eigenvectors)


[-10.65907521  -0.22750691   2.88658212]
[[ 0.21749542  0.63250104 -0.74339638]
 [ 0.84526515  0.2587998   0.46749277]
 [-0.4880805   0.73004459  0.47834331]]

In [ ]: