tensorflow中文社區(qū)學(xué)習(xí)筆記——2.5

2.5 tensorflow運(yùn)作方式入門的筆記

輸入與占位符:

定義傳入圖表的參數(shù)shape,后續(xù)訓(xùn)練過(guò)程中使用feed_dict參數(shù),將數(shù)據(jù)傳入session.run()函數(shù)

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

構(gòu)建圖表:推理、損失和訓(xùn)練

推理:盡可能地構(gòu)建圖表,做到返回包含了預(yù)測(cè)結(jié)果(output prediction)的Tensor

1.定義權(quán)重和偏差并初始化操作

2.定義模型層次構(gòu)成

損失:函數(shù)通過(guò)添加所需的損失操作,進(jìn)一步構(gòu)建圖表。

1.首先將標(biāo)簽轉(zhuǎn)換為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一一對(duì)應(yīng)的index

concated = tf.concat( [indices, labels],1) ?#數(shù)據(jù)組合

onehot_labels = tf.sparse_to_dense( concated, tf.pack([batch_size, NUM_CLASSES]),1.0,0.0) ?#就是講矩陣concated變?yōu)橐粋€(gè)batch_size*NUM_CLASSES的矩陣,其中concated中每一行有兩列,第一個(gè)數(shù)表示行號(hào),第二個(gè)數(shù)表示label的類別,變?yōu)槌砻芫仃囈院?,設(shè)第i行中l(wèi)abel值為3,則稠密矩陣的第i行中第3列為1,該行其他列數(shù)值為0

attension:!tensorflow后面版本把pack更新為stack()函數(shù)!

? ? ? ? ? ? ? ? ? ? ? ?。f.concat函數(shù)版本不同參數(shù)設(shè)置不同,新版本的維度在后,value在前!!

???????????????????????。?!tensorflow中只有經(jīng)過(guò)Session后才能看到運(yùn)行的結(jié)果,不可以直接 print?。?!

詳解函數(shù):

?tf.concat(values,concat_dim ) ?函數(shù)用來(lái)連接兩個(gè)tensor.

????參數(shù):values:表示兩個(gè)或者一組待連接的tensor.

????concat_dim:表示在哪一維上連接,必須是一個(gè)數(shù).如果concat_dim=0,表示在第一個(gè)維度上連,相當(dāng)于疊放到列上;

????如果concat_dim是1,表示在第二個(gè)維度上連

!如果要連接兩個(gè)向量,必須要調(diào)用tf.expand_dims()函數(shù)來(lái)擴(kuò)維,這就是在調(diào)用tf.concat()函數(shù)前先調(diào)用tf.expand_dims()函數(shù)的原因。

?tf.sparse_to_dense(sparse_indices, output_shape, sparse_values, default_value)可以用來(lái)生成稀疏矩陣.

????參數(shù):sparse_indices:稀疏矩陣中那些個(gè)別元素對(duì)應(yīng)的索引值。

? ? 有三種情況:?

????sparse_indices是個(gè)數(shù),那么它只能指定一維矩陣的某一個(gè)元素.?

????sparse_indices是個(gè)向量,那么它可以指定一維矩陣的多個(gè)元素.?

????sparse_indices是個(gè)矩陣,那么它可以指定二維矩陣的多個(gè)元素.

????output_shape:輸出的稀疏矩陣的shape.

????sparse_values:個(gè)別元素的值,即第一個(gè)參數(shù)選中的位置的值.

????分為兩種情況:?sparse_values是個(gè)數(shù),那么所有索引指定的位置都用這個(gè)數(shù).

? sparse_values是個(gè)向量,那么輸出矩陣的某一行向量里某一行對(duì)應(yīng)的數(shù)(因此這里向量的長(zhǎng)度應(yīng)該和輸出矩陣的行數(shù)應(yīng)該對(duì)應(yīng),不然會(huì)報(bào)錯(cuò)).

????default_value:未指定元素的默認(rèn)值,如果是稀疏矩陣,則應(yīng)該為0.

? ? ?tf.stack(values, axis=0)函數(shù)將一系列rank-R的tensor打包為一個(gè)rank-(R+1)的tensor

測(cè)試實(shí)驗(yàn)結(jié)果如下:

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)

結(jié)果如下:

2.計(jì)算交叉熵來(lái)比較inference()函數(shù)與所生成標(biāo)簽的輸出logits tensor。

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

參數(shù):

logits:神經(jīng)網(wǎng)絡(luò)最后一層的輸出,如果有batch的話,它的大小就是[batchsize,num_classes],單樣本的話,大小就是num_classes

labels:實(shí)際的標(biāo)簽,大小同上

返回值:一維向量,長(zhǎng)度為batch_size.

然后計(jì)算batch維度下的交叉熵平均值為loss:

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

訓(xùn)練:添加通過(guò)梯度下降(gradient descent)將損失最小化所需的操作

1.獲取損失loss tensor

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

2.實(shí)例化梯度下降器

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

3.生成一個(gè)保存全局訓(xùn)練步驟的數(shù)值,使用minimize()函數(shù)更新權(quán)重

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

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

狀態(tài)可視化:

1.將所有即時(shí)數(shù)據(jù)在圖表構(gòu)建階段合并至一個(gè)操作中

summary_op = tf.merge_all_summaries()

2.實(shí)例化事件文件

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)

保存檢查點(diǎn):用于恢復(fù)模型來(lái)進(jìn)一步訓(xùn)練或評(píng)估

1.實(shí)例化tf.train.Saver

2.saver.save

3.saver.restore

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • TF API數(shù)學(xué)計(jì)算tf...... :math(1)剛開(kāi)始先給一個(gè)運(yùn)行實(shí)例。tf是基于圖(Graph)的計(jì)算系統(tǒng)...
    MachineLP閱讀 4,059評(píng)論 0 1
  • 1. tf函數(shù) tensorflow 封裝的工具類函數(shù) | 操作組 | 操作 ||:-------------| ...
    南墻已破閱讀 5,623評(píng)論 0 5
  • tensorflow開(kāi)發(fā)API 架構(gòu) Modules app module: Generic entry poin...
    sennchi閱讀 1,443評(píng)論 0 2
  • 作者/沫浸涼薄 凋零的花朵是遺憾的,然而它卻可以融入泥土滋潤(rùn)萬(wàn)物;失聰?shù)呢惗喾沂沁z憾的,然而《命運(yùn)交響曲》卻令人震...
    沫浸涼薄閱讀 1,411評(píng)論 6 4
  • 蛻變與轉(zhuǎn)型之十二 對(duì)這一刻,其實(shí)一直是有心理準(zhǔn)備的。 我的一位很好的朋友,是在我們一起出去旅游后,一個(gè)月左右查出肺...
    vivi城堡閱讀 482評(píng)論 0 2

友情鏈接更多精彩內(nèi)容