TensorFlow 1.0升级带来的改动

于17年2月16日在山景城举办的首次年度TensorFlow开发者峰会上,谷歌宣布TensorFlow 1.0正式发布。这代表着于2015年11月9日首次发布的TensorFlow经过一段时间的发展,已经相对稳定。接下来记录几处在升级后需要更新的改动:

1、tf.split函数:

该函数原来的调用参数为tf.split(split_dim, num_split, value),功能是将value表示的Tensor沿着split_dim定义的维度划分为num_split个数量的子Tensor。

例如:value是一个shape为[6, 8]的Tensor,进行tf.split(0, 3, value)调用,将返回三个子Tensor(s0, s1, s2),则tf.shape(s0)将返回[2, 8]。

TensorFlow 1.0中tf.split改变了参数的顺序,使用了不同的关键字接受参数。调用参数改为tf.split(value, num_or_size_splits, axis)。所以,对于原来的代码,只需要将第一个和第三个参数对调就可以了。

2、tf.concat函数:

该函数原来的调用参数为tf.concat(concat_dim, values, name),功能是将values表示的Tensors沿着concat_dim定义的维度进行连接。

例如:tensor0 = [[0, 1, 2], [3, 4, 5]], tensor1 = [[6, 7, 8], [9, 10, 11]],进行tf.concat(0, [tensor0, tensor1])调用,将返回[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]]。而tf.concat(1, [tensor0, tensor1])调用则返回[[0, 1, 2, 6, 7, 8], [3, 4, 5, 9, 10, 11]]。

TensorFlow 1.0中tf.concat也改变了参数的顺序,使用了不同的关键字接受参数。调用参数改为tf.concat(values, axis, name)。所以,对于原来的代码,只需要将第一个和第二个参数对调就可以了。

3、tf.all_variables、tf.initialize_all_variables函数:

tf.all_variables()调用改为tf.global_variables()调用

init = tf.initialize_all_variables()

sess.run(init)改为如下调用:

init = tf.global_variables_initializer()

sess.run(init)

4、tf.nn.sigmoid_cross_entropy_with_logits函数:

该函数原来的调用参数为tf.nn.sigmoid_cross_entropy_with_logits(logits, targets, name),功能是计算两个输入logits、targets的交叉熵。

TensorFlow 1.0中该函数的调用参数改为tf.nn.sigmoid_cross_entropy_with_logits(labels = None, logits = None, name),函数的参数需要显式地写labels = ...,logits = ...。

5、单机多GPU:

for i in xrange(FLAGS.num_gpus):

    ...

调用需改为:

with tf.variable_scope(tf.get_variable_scope()):

    for i in xrange(FLAGS.num_gpus):

        ...

6、tf.mul、tf.sub、tf.neg和tf.div函数

tf.mul、tf.sub和tf.neg这三个函数不再使用,对应的功能分别交由tf.multiply、tf.subtract和tf.negative实现;除法函数tf.div交由tf.divide实现

7、tf.train.SummaryWriter和tf.train.SummaryWriterCache

tf.train.SummaryWriter和tf.train.SummaryWriterCache这两个函数对应的功能分别使用tf.summary.FileWriter和tf.summary.FileWriterCache实现

你可能感兴趣的:(TensorFlow 1.0升级带来的改动)