簡體   English   中英

如何使用Tensorflow在卷積網絡中的完全連接層之后添加回歸頭?

[英]How to add a regression head after the fully connected layer in convolutional network using Tensorflow?

我是深度學習和Tensorflow的新手,由於我正在進行的項目,我不得不學習這個主題。 我正在使用卷積網絡來檢測和查找圖像中單個對象的位置。 我正在使用Standford CS231n類中引入的方法。 講師提到了在網絡中完全連接的層之后連接回歸頭以找到對象的位置。 我知道DNNRegressor中有DNNRegressor。 我應該用它作為回歸頭嗎?

在我修改Tensorflow關於使用ConvNet來識別我的案例的手寫數字的教程之前。 我不太確定如何將回歸頭添加到該程序,以便它還可以找到該對象的邊界框。

本周我有機會接觸機器學習和深度學習,如果我問了一個非常愚蠢的問題,道歉,但我真的需要找到解決問題的方法。 非常感謝你。

首先,為了訓練神經網絡進行對象定位任務,你必須擁有一個帶有本地化對象的數據集。 這回答了您是否可以使用MNIST數據集的問題。 MNIST只包含每個圖像的類標簽,因此您需要獲取另一個數據集 賈斯汀還在 37:34左右談論了流行的數據集。

對象本地化的工作方式是學習每個圖像輸出4個值,而不是類分布。 將該四值向量與地面實況四值向量進行比較,並且損失函數通常是它們的差值的L1或L2范數。 因此在代碼中, 回歸頭是一個普通的回歸層,可以通過簡單的tf.reduce_mean調用在tensorflow中實現。

可以在此處找到執行對象本地化的小而完整的示例。 還建議看一下這個問題

我也在尋找這個問題,我在文檔中找到了以下部分。

密集(完全連接)層,對卷積層提取的特征進行分類,並由池化層進行下采樣。 在密集層中,層中的每個節點都連接到前一層中的每個節點。

根據這個引用, 似乎你不能做回歸而是分類

編輯:經過一些研究,我發現了一種在tensorflow使用fully-connected層的tensorflow

import tensorflow.contrib.slim as slim

#create your network **net**. 

#In the last step, you should use 
y_prime = slim.fully_connected(net, 1, activation_fn=None, reuse=reuse)

loss = tf.reduce_mean(tf.square(y_prime - y)) #L2 norm
lr = tf.placeholder(tf.float32)
opt = tf.train.AdamOptimizer(learning_rate=lr).minimize(loss)

您可以在最后一步之前添加更多fully connected圖層,這可以包含更多節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM