tensorflow 用到过的函数记录
tf.multinomial 从多项式分布中抽取样本。
multinomial(
logits,
num_samples,
seed=None,
name=None
)
args:
- logits:形状为 [batch_size, num_classes] 的二维张量;每个切片:[i, :]
表示所有类的非标准化对数概率。 - num_samples:0维张量。为每行切片绘制的独立样本数。
- seed:Python整数。用于为分发创建一个随机种子。 name:操作的名称(可选)。
返回:
- 返回绘制样品的形状 [batch_size, num_samples]。
tf.einsum
- einsum( equation, *inputs)
- 一般来说, 方程是从较熟悉的元素方程得到:
- 删除变量名称、括号和逗号;
- 用 “*” 替换 “,”;
- 删除总和标志;
- 将输出移到右侧,并将 “=” 替换为 “->>”。
许多常见操作可以用这种方式来表示。例如:
# Matrix multiplication
>>> einsum('ij,jk->ik', m0, m1) # output[i,k] = sum_j m0[i,j] * m1[j, k]
# Dot product
>>> einsum('i,i->', u, v) # output = sum_i u[i]*v[i]
# Outer product
>>> einsum('i,j->ij', u, v) # output[i,j] = u[i]*v[j]
# Transpose
>>> einsum('ij->ji', m) # output[j,i] = m[i,j]
# Batch matrix multiplication
>>> einsum('aij,ajk->aik', s, t) # out[a,i,k] = sum_j s[a,i,j] * t[a, j, k]
tf.assign()
- tf.assign()把value的值赋给ref,ref的值必须是Variable
tf.assign(
ref,
value,
validate_shape=None,
use_locking=None,
name=None
)
使用案例:
import tensorflow as tf
x = tf.Variable(1)
x = tf.assign(x, 2)
sess = tf.Session()
print(sess.run(x))
tf.device()
- 在tensorflow中,我们可以使用 tf.device() 指定模型运行的具体设备,可以指定运行在GPU还是CUP上,以及哪块GPU上。
设置使用GPU
- 使用 tf.device(’/gpu:1’) 指定Session在第二块GPU上运行:
import tensorflow as tf
with tf.device('/gpu:1')
v1 = tf.constant([1.0, 2.0, 3.0], shape=[3], name='v1')
v2 = tf.constant([1.0, 2.0, 3.0], shape=[3], name='v2')
sumV12 = v1 + v2
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
print sess.run(sumV12)
设置使用cpu
- tensorflow中不同的GPU使用/gpu:0和/gpu:1区分,而CPU不区分设备号,统一使用 /cpu:0
import tensorflow as tf
with tf.device('/cpu:0'):
v1 = tf.constant([1.0, 2.0, 3.0], shape=[3], name='v1')
v2 = tf.constant([1.0, 2.0, 3.0], shape=[3], name='v2')
sumV12 = v1 + v2
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
print sess.run(sumV12)
.int_shape()
>>> from keras import backend as K
>>> input = K.placeholder(shape=(2, 4, 5))
>>> K.int_shape(input)
(2, 4, 5)
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> K.int_shape(kvar)
(2, 2)