tensorflow中文社区学习笔记——2.5

2.5 tensorflow运作方式入门的笔记

输入与占位符:

定义传入图表的参数shape,后续训练过程中使用feed_dict参数,将数据传入session.run()函数

tf.placeholder(tf.int32, shape=(batch_size))   

构建图表:推理、损失和训练

推理:尽可能地构建图表,做到返回包含了预测结果(output prediction)的Tensor

1.定义权重和偏差并初始化操作

2.定义模型层次构成

损失:函数通过添加所需的损失操作,进一步构建图表。

1.首先将标签转换为one-hot形式

batch_size = tf.size(labels)        #返回tensor labels的形状

labels = tf.expand_dims(labels,1)  #张量在1维上增加~ shape[n,1]

indices = tf.expand_dims(tf.range(0, batch_size,1),1)  #与label一一对应的index

concated = tf.concat( [indices, labels],1)  #数据组合

onehot_labels = tf.sparse_to_dense( concated, tf.pack([batch_size, NUM_CLASSES]),1.0,0.0)  #就是讲矩阵concated变为一个batch_size*NUM_CLASSES的矩阵,其中concated中每一行有两列,第一个数表示行号,第二个数表示label的类别,变为稠密矩阵以后,设第i行中label值为3,则稠密矩阵的第i行中第3列为1,该行其他列数值为0

attension:!tensorflow后面版本把pack更新为stack()函数!

                      !!tf.concat函数版本不同参数设置不同,新版本的维度在后,value在前!!

                      !!!tensorflow中只有经过Session后才能看到运行的结果,不可以直接 print!!!

详解函数:

❤tf.concat(values,concat_dim )  函数用来连接两个tensor.

    参数:values:表示两个或者一组待连接的tensor.

    concat_dim:表示在哪一维上连接,必须是一个数.如果concat_dim=0,表示在第一个维度上连,相当于叠放到列上;

    如果concat_dim是1,表示在第二个维度上连

!如果要连接两个向量,必须要调用tf.expand_dims()函数来扩维,这就是在调用tf.concat()函数前先调用tf.expand_dims()函数的原因。

❤tf.sparse_to_dense(sparse_indices, output_shape, sparse_values, default_value)可以用来生成稀疏矩阵.

    参数:sparse_indices:稀疏矩阵中那些个别元素对应的索引值。

    有三种情况: 

    sparse_indices是个数,那么它只能指定一维矩阵的某一个元素. 

    sparse_indices是个向量,那么它可以指定一维矩阵的多个元素. 

    sparse_indices是个矩阵,那么它可以指定二维矩阵的多个元素.

    output_shape:输出的稀疏矩阵的shape.

    sparse_values:个别元素的值,即第一个参数选中的位置的值.

    分为两种情况: sparse_values是个数,那么所有索引指定的位置都用这个数.

  sparse_values是个向量,那么输出矩阵的某一行向量里某一行对应的数(因此这里向量的长度应该和输出矩阵的行数应该对应,不然会报错).

    default_value:未指定元素的默认值,如果是稀疏矩阵,则应该为0.

    ❤tf.stack(values, axis=0)函数将一系列rank-R的tensor打包为一个rank-(R+1)的tensor

测试实验结果如下:

label = [3,5]

print (tf.shape(label))

index = tf.range(0,2)

print (tf.shape(index))

labels = tf.expand_dims(label,1)

indexs = tf.expand_dims(index,1)

print (tf.shape(labels))

print (tf.shape(indexs))

concated = tf.concat([indexs,labels],1)

one_hot = tf.sparse_to_dense(concated,tf.stack([2,10]),1.0,0.0)

with tf.Session() as sess:

    result = sess.run(one_hot)

    print (result)

结果如下:

2.计算交叉熵来比较inference()函数与所生成标签的输出logits tensor。

❤cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits, onehot_labels, name='xentropy')

参数:

logits:神经网络最后一层的输出,如果有batch的话,它的大小就是[batchsize,num_classes],单样本的话,大小就是num_classes

labels:实际的标签,大小同上

返回值:一维向量,长度为batch_size.

然后计算batch维度下的交叉熵平均值为loss:

❤loss = tf.reduce_mean(cross_entropy, name='xentropy_mean')

训练:添加通过梯度下降(gradient descent)将损失最小化所需的操作

1.获取损失loss tensor

tf.scalar_summary(loss.op.name, loss)

2.实例化梯度下降器

optimizer = tf.train.GradientDescentOptimizer(FLAGS.learning_rate)

3.生成一个保存全局训练步骤的数值,使用minimize()函数更新权重

global_step = tf.Variable(0, name='global_step', trainable=False)

train_op = optimizer.minimize(loss, global_step=global_step)

状态可视化:

1.将所有即时数据在图表构建阶段合并至一个操作中

summary_op = tf.merge_all_summaries()

2.实例化事件文件

summary_writer = tf.train.SummaryWriter(FLAGS.train_dir,graph_def=sess.graph_def)

summary_str = sess.run(summary_op, feed_dict=feed_dict)

summary_writer.add_summary(summary_str, step)

保存检查点:用于恢复模型来进一步训练或评估

1.实例化tf.train.Saver

2.saver.save

3.saver.restore

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

推荐阅读更多精彩内容