- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
有一段时间没用tensorflow了,现在跑实验还是存在一些坑了,主要是关于张量计算的问题。tensorflow升级1.0版本后与以前的版本并不兼容,可能出现各种奇奇怪怪的问题.
1 tf.concat函数 。
tensorflow1.0以前函数用法:tf.concat(concat_dim, values, name='concat'),第一个参数为连接的维度,可以将几个向量按指定维度连接起来.
如:
1
2
3
4
5
6
|
t1
=
[[
1
,
2
,
3
], [
4
,
5
,
6
]]
t2
=
[[
7
,
8
,
9
], [
10
,
11
,
12
]]
#按照第0维连接
tf.concat(
0
, [t1, t2])
=
=
> [[
1
,
2
,
3
], [
4
,
5
,
6
], [
7
,
8
,
9
], [
10
,
11
,
12
]]
#按照第1维连接
tf.concat(
1
, [t1, t2])
=
=
> [[
1
,
2
,
3
,
7
,
8
,
9
], [
4
,
5
,
6
,
10
,
11
,
12
]]
|
tf.concat的作用主要是将向量按指定维连起来,其余维度不变;而1.0版本以后,函数的用法变成:
1
2
3
4
5
6
|
t1
=
[[
1
,
2
,
3
], [
4
,
5
,
6
]]
t2
=
[[
7
,
8
,
9
], [
10
,
11
,
12
]]
#按照第0维连接
tf.concat( [t1, t2],
0
)
=
=
> [[
1
,
2
,
3
], [
4
,
5
,
6
], [
7
,
8
,
9
], [
10
,
11
,
12
]]
#按照第1维连接
tf.concat([t1, t2],
1
)
=
=
> [[
1
,
2
,
3
,
7
,
8
,
9
], [
4
,
5
,
6
,
10
,
11
,
12
]]
|
位置变了,需要注意.
2 tf.stack函数 。
用法:stack(values, axis=0, name=”stack”)
“”“Stacks a list of rank-R tensors into one rank-(R+1) tensor. 。
1
2
3
4
5
6
|
x
=
tf.constant([
1
,
4
])
y
=
tf.constant([
2
,
5
])
z
=
tf.constant([
3
,
6
])
tf.stack([x,y,z])
=
=
> [[
1
,
4
],[
2
,
5
],[
3
,
6
]]
tf.stack([x,y,z],axis
=
0
)
=
=
> [[
1
,
4
],[
2
,
5
],[
3
,
6
]]
tf.stack([x,y,z],axis
=
1
)
=
=
> [[
1
,
2
,
3
], [
4
,
5
,
6
]]
|
tf.stack将一组R维张量变为R+1维张量。注意:tf.pack已经变成了tf.stack 。
3.tf.reshape 。
用法:reshape(tensor, shape, name=None):主要通过改变张量形状,可以从高维变低维,也可以从低维变高维; 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
a
=
tf.Variable(initial_value
=
[[
1
,
2
,
3
],[
4
,
5
,
6
]])
=
=
> shape:[
2
,
3
]
b
=
tf.Variable(initial_value
=
[[[
1
,
2
,
3
],[
4
,
5
,
6
]],[[
7
,
8
,
9
],[
1
,
0
,
2
]]])
=
=
> shape:[
2
,
2
,
3
]
a_1
=
tf.reshape(a,[
2
,
1
,
1
,
3
])
=
=
> [[[[
1
,
2
,
3
]]],[[[
4
,
5
,
6
]]]]
a_2
=
tf.reshape(a,[
2
,
1
,
3
])
=
=
> [[[
1
,
2
,
3
]],[[
4
,
5
,
6
]]]
b_1
=
tf.reshape(b,[
2
,
2
,
1
,
3
])
=
=
> [[[[
1
,
2
,
3
]],[[
4
,
5
,
6
]]],[[[
7
,
8
,
9
]],[[
1
,
0
,
2
]]]]
new_1
=
tf.concat([b_1,a_1],
1
)
new_2
=
tf.reshape(tf.concat([b,a_2],
1
),[
2
,
3
,
1
,
3
])
"""
new_1:
[[[[
1
2
3
]]
[[
4
5
6
]]
[[
1
2
3
]]]
[[[
7
8
9
]]
[[
1
0
2
]]
[[
4
5
6
]]]]
new_2;
[[[[
1
2
3
]]
[[
4
5
6
]]
[[
1
2
3
]]]
[[[
7
8
9
]]
[[
1
0
2
]]
[[
4
5
6
]]]]
|
补充知识:tensorflow中的reshape(tensor,[1,-1])和reshape(tensor,[-1,1]) 。
和python 中的reshape用法应该一样 。
1
2
3
4
5
6
|
import
tensorflow as tf
a
=
[[
1
,
2
],[
3
,
4
],[
5
,
6
]]
tf.reshape(a,[
-
1
,
1
])
Out[
13
]: <tf.Tensor
'Reshape_4:0'
shape
=
(
6
,
1
) dtype
=
int32>
tf.reshape(tf.reshape(a,[
-
1
,
1
]),[
1
,
-
1
])
Out[
14
]: <tf.Tensor
'Reshape_6:0'
shape
=
(
1
,
6
) dtype
=
int32>
|
tf.reshape(tensor,[-1,1])将张量变为一维列向量 。
tf.reshape(tensor,[1,-1])将张量变为一维行向量 。
以上这篇浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/a18852867035/article/details/79048684 。
最后此篇关于浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack的文章就讲到这里了,如果你想了解更多关于浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!