2016-07-30 107 views
1

我試過成功使用Quickstart泰坦尼克教程並進一步做了一些測試。 我是通過8浮點輸入預測浮點目標,然後修改了一些教程,然後 'ValueError:無法爲Tensor u'TargetsData/Y:0提供形狀值(64,), 1)'TensorFlow/TFLearn -Architecture Err - 'ValueError:無法爲張量u'TargetsData/Y:0'提供shape(64,)形狀的值(形狀爲'(?,1)')

構建神經網絡

net = tflearn.input_data(shape=[None, 8]) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 32) 
net = tflearn.fully_connected(net, 1, activation='relu') 
net = tflearn.regression(net) 

定義模型

model = tflearn.DNN(net, tensorboard_verbose=0) 

開始訓練(應用梯度下降算法)

model.fit(data, mfe, n_epoch=100)#Err occurs 

有人可以幫助我: 1.什麼是'形狀(64,)'和形狀'(?,1)'代表什麼? 2.我該如何解決這個體系結構錯誤? 3.你能否提出一些材料學習神經網絡架構的建議?

感謝&問候, 西蒙

+0

總是好給一個[mcve]隨着你的問題... – Julien

回答

2

我從來沒有使用TensorFlow但我敢打賭,這僅僅是一個廣播的問題。試圖改變您的問題陣列,其當前具有的形狀(64)的形狀爲(64,1),也就是從一個行向量的列向量:

my_array.shape = (64, 1) 

或更一般地爲任何長度:

my_array.shape = (-1, 1) 

您可以在numpy文檔頁面上閱讀有關形狀和廣播規則的更多詳細信息。至於神經網絡架構學習材料的建議,不幸的是這是由SO規則引起的偏離主題(基於觀點)。

+0

謝謝!這有助於:) –

1

形狀(64)是網絡model.Here tflearn使用64的batch_size的,因爲它的default.if你給作爲的batch_size 8它本來的形狀(8)

形狀(?, 1)從您的net.The泰坦尼克一例的輸出是一個分類問題,它有2類,所以它有2個單位的產出

net=tflearn.reshape(net,[-1]) 

這應該解決這個問題。的-1意味着無

確保重塑被估計層即tflearn.regression之前

0

1)的形狀(64,完成的)是默認的batch_size,
形狀(?,1)是輸出您的網絡用於確定損失。

2)我該如何解決這個架構錯誤? 因爲你的輸出形狀(樣品#2) 你的最後一層應該是

net = tflearn.fully_connected(net, 2, activation='relu')

3)你能做出的學習神經網絡的 結構材料的一些建議? Udacity。Udemy.com有優秀的神經網絡課程,您可以免費學到很多

相關問題