1 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
關(guān)于TensorFlow中的模型構(gòu)建存在強(qiáng)烈的誤解。建議您在官方指南中閱讀有關(guān)TensorFlow的計(jì)算圖和該API的其他低級(jí)詳細(xì)信息的更多信息。
使用TensorFlow構(gòu)建的操作未綁定到Python變量(假設(shè)對(duì)于此答案,我們不在Eager模式下)。當(dāng)調(diào)用中的層構(gòu)造函數(shù)之一tf.layers(或中的其他基本函數(shù),例如中的tf.nn)時(shí),這會(huì)將新操作添加到當(dāng)前活動(dòng)的圖形中,并返回Tensor與該層的輸出相對(duì)應(yīng)的圖。刪除或更改用于保留這些張量的Python變量的內(nèi)容時(shí),這些操作不會(huì)消失。
該函數(shù)的dnn作用是迭代創(chuàng)建一系列密集層。在每個(gè)步驟中,該變量inputs都會(huì)更改為指向最新創(chuàng)建的圖層的輸出,從而可以將其“饋入”到下一個(gè)圖層。是否使用與原始輸入相同的變量或?yàn)榇耸褂眯碌淖兞渴且粋€(gè)意見問題(我經(jīng)常net自己使用一個(gè)新變量)。默認(rèn)情況下,這將導(dǎo)致5個(gè)完全連接的層的序列。在所有這一切中,只構(gòu)建了圖。此處實(shí)際沒有應(yīng)用網(wǎng)絡(luò)訓(xùn)練或權(quán)重初始化過程。
這也可以通過視覺驗(yàn)證。以下代碼會(huì)將圖形的簽名寫入TensorFlow摘要文件:
he_init = tf.variance_scaling_initializer()
def dnn(inputs, n_hidden_layers=5, n_neurons=100, name=None,
activation=tf.nn.elu, initializer=he_init):
with tf.variable_scope(name, "dnn"):
for layer in range(n_hidden_layers):
inputs = tf.layers.dense(inputs, n_neurons, activation=activation,
kernel_initializer=initializer,
name="hidden%d" % (layer + 1))
return inputs
x = tf.placeholder(tf.float32, [32, 128])
y = dnn(x)
writer = tf.summary.FileWriter(logdir='mydnn', graph=tf.get_default_graph())
writer.flush()
通過使用TensorBoard打開相同的日志目錄,我們得到下圖:
添加回答
舉報(bào)