tensorflow基本操作(1)
import tensorflow as tf
import numpy as np
点乘,支持broadcasting
- 乘号* 和 multiply等价
- mul已经废弃不用了
- matmul 是矩阵相乘
broadcasting参见:
http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
原则:
When operating on two arrays, NumPy compares their shapes element-wise. It starts with the trailing dimensions, and works its way forward. Two dimensions are compatible when
- they are equal, or
- one of them is 1
a = tf.placeholder("float")
b = tf.placeholder("float")
y = a * b
y2 = tf.multiply(a,b)
sess = tf.Session()
r, r2 = sess.run([y,y2], feed_dict={a:[3,1], b:[[4],[1]]})
print r
print r2
sess.close()
切片 slice
- begin 起点的坐标
- size 切片的大小
- begin[i] + size[i] <=input.shape[i]
分割 split, 沿着某一维度将tensor分割为n个tensor list
- 分割后list中的每个tensor的维度不降
input = tf.placeholder('float')
begin = tf.placeholder('int32')
size = tf.placeholder('int32')
out = tf.slice(input, begin, size)
s = tf.split(input, num_or_size_splits=3, axis=0)
sess= tf.Session()
input_ = [[[1, 1, 1], [2, 2, 2]],[[3, 3, 3], [4, 4, 4]],[[5, 5, 5], [6, 6, 6]]]
begin_ = [1, 0, 0]
size_ = [1,1,3]
o = sess.run(out, feed_dict={input:input_, begin:begin_, size:size_})
print o
s_ = sess.run(s, feed_dict={input:input_})
print(s_)
print(type(s_))
print(s_[0])
print(type(s_[0]))
print(type(s))
print(type(out))
sess.close()
[[[ 3. 3. 3.]]]
[array([[[ 1., 1., 1.],
[ 2., 2., 2.]]], dtype=float32), array([[[ 3., 3., 3.],
[ 4., 4., 4.]]], dtype=float32), array([[[ 5., 5., 5.],
[ 6., 6., 6.]]], dtype=float32)]
<type 'list'>
[[[ 1. 1. 1.]
[ 2. 2. 2.]]]
<type 'numpy.ndarray'>
<type 'list'>
<class 'tensorflow.python.framework.ops.Tensor'>
tensor concat 沿着某一维度连接tensor
tensor stack 将一系列rank=R的tensor 打包为rank=R+1的tensor
tensor pack 已被废弃,用stack代替
t1 = tf.constant([[1,2,3],[4,5,6]])
t2 = tf.constant([[7,8,9],[10,11,12]])
c1= tf.concat([t1,t2], 0)
c2= tf.concat([t1,t2], 1)
r1 = tf.reshape(c1, [-1])
r2 = tf.reshape(c2, [-1])
p1 = tf.stack([t1,t2],0)
p2 = tf.stack([t1,t2],1)
p3 = [t1, t2]
with tf.Session() as sess:
print(sess.run([c1, c2]))
print(sess.run([tf.rank(t1),tf.rank(c1)]))
print("=======")
print(sess.run([r1, r2]))
print("=======")
print(sess.run([p1, p2]))
print(sess.run([tf.rank(t1),tf.rank(p1)]))
print(sess.run(tf.shape([p1, p2])))
print("=======")
print(sess.run(p3))
[array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]], dtype=int32), array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]], dtype=int32)]
[2, 2]
=======
[array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=int32), array([ 1, 2, 3, 7, 8, 9, 4, 5, 6, 10, 11, 12], dtype=int32)]
=======
[array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]], dtype=int32), array([[[ 1, 2, 3],
[ 7, 8, 9]],
[[ 4, 5, 6],
[10, 11, 12]]], dtype=int32)]
[2, 3]
=======
[array([[1, 2, 3],
[4, 5, 6]], dtype=int32), array([[ 7, 8, 9],
[10, 11, 12]], dtype=int32)]
=======
[2 2 2 3]
c1 = tf.constant([1])
c2 = tf.constant([2])
c3 = tf.constant([3])
con = tf.concat([c1,c2,c3], 0)
with tf.Session() as sess:
print(sess.run(tf.shape(c1)[0]))
print(sess.run(con))
1
[1 2 3]
可以认为 tensor 是一个n维的数组(array)或列表(list), tensor具有静态的type 和动态的维度
一个scalar 就是0维的数组,rank = 0,shape是[]
下面的
c1 rank=0, shap=[]
c2 rank=1, shap=[1]
c3 rank=1, shap=[2]
c1 = tf.constant(1)
c2 = tf.constant([1])
c3 = tf.constant([1,2])
s1 = tf.shape(c1)
s2 = tf.shape(c2)
s3 = tf.shape(c3)
with tf.Session() as sess:
c1_, c2_, c3_ = sess.run([c1,c2,c3])
print(c1_, c2_, c3_)
print(type(c1_), type(c2_), type(c3_))
print(c1_.shape)
print("================")
o1, o2,o3 = sess.run([s1,s2,s3])
print(o1, o2, o3)
print(type(o1), type(o2), type(o3))
print(o1.shape)
(1, array([1], dtype=int32), array([1, 2], dtype=int32))
(<type 'numpy.int32'>, <type 'numpy.ndarray'>, <type 'numpy.ndarray'>)
()
================
(array([], dtype=int32), array([1], dtype=int32), array([2], dtype=int32))
(<type 'numpy.ndarray'>, <type 'numpy.ndarray'>, <type 'numpy.ndarray'>)
(0,)
li = np.zeros(5)
li[0] = tf.constant(1) # tensor是个数组,哪怕是纯量
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-66-07967146eb99> in <module>()
1 li = np.zeros(5)
----> 2 li[0] = tf.constant(1)
ValueError: setting an array element with a sequence.
placeholder, 不指定shape时候,可以feed任何shape的数据;指定的话,必须按照指定的shape feed 数据
x = tf.placeholder(shape=(2,1), dtype=tf.int32)
m = tf.placeholder(dtype=tf.int32)
y = x*2
n = m*2
with tf.Session() as sess:
m_ = [[2.0],[2.0]]
m_o = sess.run(m, feed_dict={m:m_})
print(m_)
print(m_o)
print(m_ - m_o)
print(type(m_), type(m_o))
print(sess.run(n, feed_dict={m:[[2,2],[1,1]]}))
[[2.0], [2.0]]
[[2]
[2]]
[[ 0.]
[ 0.]]
(<type 'list'>, <type 'numpy.ndarray'>)
[[4 4]
[2 2]]
li = []
li.append([tf.constant(1)])
li.append([tf.constant(2)])
li2 = tf.concat(li, axis=0)
with tf.Session() as sess:
print(sess.run(li))
print(sess.run(li2))
[[1], [2]]
[1 2]
li = []
li.append(tf.constant(1))
li.append(tf.constant(2))
li2 = tf.stack(li, axis=0)
#li2 = tf.concat(li, axis=0) # 错误, 纯量不能使用cancat
with tf.Session() as sess:
print(sess.run(li))
print(sess.run(li2))
[1, 2]
[1 2]
tensorflow基本操作(1)的更多相关文章
- Tensorflow从入门到精通之——Tensorflow基本操作
前边的章节介绍了什么是Tensorflow,本节将带大家真正走进Tensorflow的世界,学习Tensorflow一些基本的操作及使用方法.同时也欢迎大家关注我们的网站和系列教程:http://ww ...
- Tensorflow基本操作理解
1. TensorsTensorFlow的数据中央控制单元是tensor(张量),一个tensor由一系列的原始值组成,这些值被形成一个任意维数的数组.一个tensor的列就是它的维度. 2. The ...
- 深度学习原理与框架-Tensorflow基本操作-mnist数据集的逻辑回归 1.tf.matmul(点乘操作) 2.tf.equal(对应位置是否相等) 3.tf.cast(将布尔类型转换为数值类型) 4.tf.argmax(返回最大值的索引) 5.tf.nn.softmax(计算softmax概率值) 6.tf.train.GradientDescentOptimizer(损失值梯度下降器)
1. tf.matmul(X, w) # 进行点乘操作 参数说明:X,w都表示输入的数据, 2.tf.equal(x, y) # 比较两个数据对应位置的数是否相等,返回值为True,或者False 参 ...
- 深度学习原理与框架-Tensorflow基本操作-实现线性拟合
代码:使用tensorflow进行数据点的线性拟合操作 第一步:使用np.random.normal生成正态分布的数据 第二步:将数据分为X_data 和 y_data 第三步:对参数W和b, 使用t ...
- 深度学习原理与框架-Tensorflow基本操作-变量常用操作 1.tf.random_normal(生成正态分布随机数) 2.tf.random_shuffle(进行洗牌操作) 3. tf.assign(赋值操作) 4.tf.convert_to_tensor(转换为tensor类型) 5.tf.add(相加操作) tf.divide(相乘操作) 6.tf.placeholder(输入数据占位
1. 使用tf.random_normal([2, 3], mean=-1, stddev=4) 创建一个正态分布的随机数 参数说明:[2, 3]表示随机数的维度,mean表示平均值,stddev表示 ...
- 深度学习原理与框架-Tensorflow基本操作-Tensorflow中的变量
1.tf.Variable([[1, 2]]) # 创建一个变量 参数说明:[[1, 2]] 表示输入的数据,为一行二列的数据 2.tf.global_variables_initializer() ...
- tensorflow基本操作介绍
1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...
- TF Boys (TensorFlow Boys ) 养成记(一):TensorFlow 基本操作
本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,所以只介绍关于图像处理部分的内容,并且默认TensorFlow已经配置好,如果没有配置好,请参考官方文档配置安装,推荐用pip安装.关于 ...
- 53、tensorflow基本操作
import tensorflow as tf import numpy as np x_data = np.float32(np.random.rand(2,100)) print(x_data) ...
随机推荐
- java io 文件下载功能
一. @RequestMapping(value = "/download/{filename}") public void downloadFile(HttpServletReq ...
- IntelliJ IDEA 远程调试 Tomcat 的方法
在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remo ...
- PL/SQL中判断字段为空
功能写完发现数据库里好多关键字段是空的,可以直接删掉,可直接: DELETE FROM 表名 WHERE 字段 IS NULL OR TRIM(字段) = ''
- inux下:热插拔和模块是什么
一.何为模块? 文件系统.设备驱动程序.网络协议都可以理解为模块.模块本质也是普通的软件系统. 二.热插拔 硬件层面:只在不断电.不关闭系统的情况下增加或者删除对应部件,比如电源.硬盘.一些高端设备硬 ...
- Linux--目录管理与文件管理--02
******Linux目录结构与目录管理******* 一.Linux目录结构: 1.目录创建规则:FHS文件系统层次化标准 指定了Linux操作系统的哪些目录是一定要具备的 2.目录的结构 树形结构 ...
- web页面请求历程
web页面请求历程 1)准备DHCP,UDP,IP和以太网 客户端要访问www.google.com的网站. 首先客户端要与网络相接,没有IP地址地址就不能做什么事情,所以客户端采取的一个网络相关的动 ...
- keras,在 fit 和 evaluate 中 都有 verbose 这个参数
1.fit 中的 verbose verbose:该参数的值控制日志显示的方式verbose = 0 不在标准输出流输出日志信息verbose = 1 输出进度条记录verbose = 2 ...
- 解决:java compiler level does not match the version of the installed java project facet错误
java compiler level does not match the version of the installed java project facet错误的解决 因工作的关系,Eclip ...
- python大佬养成计划----HTML网页设计(表格)
制作网页时,要合理规划网页布局.比如,在网页中添加一个表格,可分为上.中.下三部分,上部存放网页标题或LOGO图片,中间部分是整个网页的主体内容,底部就是相关制作信息.此外,单元格里还可再添加单元格, ...
- mysql8.0.17复制搭建及其gtid的1062和1032异常
mysql8.0.17复制搭建及其gtid的1062和1032异常 参考资料: https://blog.csdn.net/wzy0623/article/details/91982743https: ...