tensorflow基础篇

写在前面

  • 态度决定高度!让优秀成为一种习惯!
  • 世界上没有什么事儿是加一次班解决不了的,如果有,就加两次!(- - -茂强)

tensorflow的一般建模步骤:

  • 数据的输入(这个有很多方法,读取本地文件,或者爬虫网络数据,或者数仓都可以)

  • 数据的标准化 (主要是数据转换成tensorflow能接受的格式)

  • 把数据分成训练数据和测试数据

  • 设置模型参数 (主要有学习率,迭代次数,batch_size等)
    learning_rate = 0.01
    batch_size = 100
    iterations = 1000

  • 初始化variables和placeholders
    a_var = tf.constant(42)
    x_input = tf.placeholder(tf.float32, [None, input_size])
    y_input = tf.placeholder(tf.float32, [None, num_classes])
    其中( float64 and float16 )表示浮点类型的不同精度

  • 创建模型
    y_pred = tf.add(tf.mul(x_input, weight_matrix), b_matrix)


    模型
  • 定义损失函数
    loss = tf.reduce_mean(tf.square(y_actual – y_pred)

损失函数
  • 初始化和训练模型
    with tf.Session(graph=graph) as session:
    ...
    session.run(...)
    ...
  • 模型评估
  • 参数或者结构调整优化模型
  • 模型应用

Tensors的声明方式

  • 创建一个0值填充的tensor
    zero_tsr = tf.zeros([row_dim, col_dim])
  • 创建一个1填充的tensor
    ones_tsr = tf.ones([row_dim, col_dim])
  • 创建一个常量填充的tensor
    filled_tsr = tf.fill([row_dim, col_dim], 42)
  • 通过以声明的常量创建tensor
    constant_tsr = tf.constant([1,2,3])
    tf.constant(42, [row_dim, col_dim])与上一个是一样的
  • 通过其他的tensor创建
    zeros_similar = tf.zeros_like(constant_tsr)
    ones_similar = tf.ones_like(constant_tsr)
  • 序列tensor
    linear_tsr = tf.linspace(start=0, stop=1, start=3)
    [0.0, 0.5, 1.0]
    integer_seq_tsr = tf.range(start=6, limit=15, delta=3)
    [6, 9, 12]
  • 随机tensor
    randunif_tsr = tf.random_uniform([row_dim, col_dim],minval=0, maxval=1) 均与分布 ( minval <= x < maxval )
    randnorm_tsr = tf.random_normal([row_dim, col_dim],mean=0.0, stddev=1.0) 正态分布
    runcnorm_tsr = tf.truncated_normal([row_dim, col_dim],mean=0.0, stddev=1.0) 非负截尾正态分布
  • 随机项数组
    shuffled_output = tf.random_shuffle(input_tensor)
    cropped_output = tf.random_crop(input_tensor, crop_size)
  • 随机copy一个图像
    cropped_image = tf.random_crop(my_image, [height/2, width/2,3])

variable的声明

  • 先看一个例子,体会一下接受的入参是什么?
    my_var = tf.Variable(tf.zeros([row_dim, col_dim]))
  • 如何创建和初始化一个变量
    my_var = tf.Variable(tf.zeros([2,3]))
    sess = tf.Session()
    initialize_op = tf.global_variables_initializer ()
    sess.run(initialize_op)
  • Placeholders的直观感受,该占位符是为了session训练思的数据可以从feed_dict中获取,我们只有对placeholders有个操作才能把它放到图中计算,首先初始化一个图session,然后声明一个placeholders就是x,然后声明一个y跟x之间有个恒等操作identity,然后随机创建一个数据x_vals,运行identity操作。
    sess = tf.Session()
    x = tf.placeholder(tf.float32, shape=[2,2])
    y = tf.identity(x)
    x_vals = np.random.rand(2,2)
    sess.run(y, feed_dict={x: x_vals})
    # Note that sess.run(x, feed_dict={x: x_vals}) will result in a self-referencing error
  • 全局与局部初始化变量
    在初始化时没有变量依赖顺序的就用全局的
    initializer_op = tf.global_variables_initializer ()
    如果有依赖顺序的就用局部的
    sess = tf.Session()
    first_var = tf.Variable(tf.zeros([2,3]))
    sess.run(first_var.initializer)
    second_var = tf.Variable(tf.zeros_like(first_var))
    # Depends on first_var
    sess.run(second_var.initialize

Matrices矩阵操作

  identity_matrix = tf.diag([1.0, 1.0, 1.0])
  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))
  [[ 1. 0. 0.]
   [ 0. 1. 0.]
   [ 0. 0. 1.]]
  print(sess.run(A))
  [[ 0.96751703 0.11397751 -0.3438891 ]
  [-0.10132604 -0.8432678 0.29810596]]
  print(sess.run(B))
  [[ 5. 5. 5.]
  [ 5. 5. 5.]]
  print(sess.run(C))
  [[ 0.33184157 0.08907614]
  [ 0.53189191 0.67605299]
  [ 0.95889051 0.67061249]]
  print(sess.run(D))
  [[ 1. 2. 3.]
   [-3. -7. -1.]
   [ 0. 5. -2.]]
  • 矩阵的加减和乘
    print(sess.run(A+B))
    [[ 4.61596632 5.39771316 4.4325695 ]
    [ 3.26702736 5.14477345 4.98265553]]
    print(sess.run(B-B))
    [[ 0. 0. 0.]
    [ 0. 0. 0.]]
    Multiplication
    print(sess.run(tf.matmul(B, identity_matrix)))
    [[ 5. 5. 5.]
    [ 5. 5. 5.]]
  • 矩阵的行列式
    print(sess.run(tf.matrix_determinant(D)))
    -38.0
  • 矩阵的逆
    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]]
  • 矩阵的楚列斯基分解
    print(sess.run(tf.cholesky(identity_matrix)))
    [[ 1. 0. 1.]
    [ 0. 1. 0.]
    [ 0. 0. 1.]]
  • 矩阵的特征值与特征向量
    print(sess.run(tf.self_adjoint_eig(D))
    [[-10.65907521 -0.22750691 2.88658212]
    [ 0.21749542 0.63250104 -0.74339638]
    [ 0.84526515 0.2587998 0.46749277]
    [ -0.4880805 0.73004459 0.47834331]]
    第一行就是特征值,剩下的行就是特征向量

Operations的声明

  • tensorflow有一些标准的operations(加减乘除)
    add() , sub() , mul() , div()

  • tensorflow提供了数种div()方法
    print(sess.run(tf.div(3,4)))
    0
    print(sess.run(tf.truediv(3,4)))
    0.75
    print(sess.run(tf.floordiv(3.0,4.0)))
    0.0

  • 取余
    print(sess.run(tf.mod(22.0, 5.0)))
    2.0

  • cross()方法
    该方法只接受两个三维的tensor
    print(sess.run(tf.cross([1., 0., 0.], [0., 1., 0.])))
    [ 0. 0. 1.0]

  • 其他的函数列表,大家自己体会吧(英文不好下个金山词霸,挺好用的)

tensorflow常用数学函数
  • 特殊的数学函数
tensorflow特殊函数

# Tangent function (tan(pi/4)=1)
print(sess.run(tf.div(tf.sin(3.1416/4.), tf.cos(3.1416/4.))))
1.0

  • 自定义函数
    def custom_polynomial(value):
    return(tf.sub(3 * tf.square(value), value) + 10)
    print(sess.run(custom_polynomial(11)))
    362
  • 激活函数(不用多说都知道激活函数吧)
  • max(0,x)
    print(sess.run(tf.nn.relu([-3., 3., 10.])))
    [ 0. 3. 10.]
  • min(max(0,x),6)
    print(sess.run(tf.nn.relu6([-3., 3., 10.])))
    [ 0. 3. 6.]
  • 1/(1+exp(-x))
    print(sess.run(tf.nn.sigmoid([-1., 0., 1.])))
    [ 0.26894143 0.5 0.7310586 ]
  • ((exp(x)-exp(-x))/(exp(x)+exp(-x)) [-1, 1]
    print(sess.run(tf.nn.tanh([-1., 0., 1.])))
    [-0.76159418 0. 0.76159418 ]
  • x/(abs(x) + 1)
    print(sess.run(tf.nn.softsign([-1., 0., -1.])))
    [-0.5 0. 0.5]
  • log(exp(x) + 1)
    print(sess.run(tf.nn.softplus([-1., 0., -1.])))
    [ 0.31326166 0.69314718 1.31326163]
  • (exp(x)+1) if x < 0 else x
    print(sess.run(tf.nn.elu([-1., 0., -1.])))
    [-0.63212055 0. 1. ]
    下面使一些图形
Activation functions of softplus, ReLU, ReLU6, and exponential LU
Sigmoid, hyperbolic tangent (tanh), and softsign activation function

好了,基础性的东西介绍就先到这里,可否赞一个?你的支持就是我的动力!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容