2017-12-28 12 views
0

Ich baue eine DNN für ein Mustererkennungsproblem mit TFLearn in Python 3.5. Mein Input ist wie ein [50, 300] geformt, grob gesprochen ist mein Trainingssatz eine Liste von Arrays, die jeweils aus 50 Elementen bestehen, die aus 300 Elementen bestehen.TFLearn: Definiere korrekte Dimension von DNN

Alle Arrays, die ich erstelle, sind NumPy-Arrays.

Hier ist der Code Ich verwende:

training = np.array(training) 

# create train and test lists 
train_x = list(training[:,0]) 
print(train_x[0]) 
train_y = list(training[:,1]) 
# reset underlying graph data 
tf.reset_default_graph() 
mean = int(len(train_x[0])/len(train_y[0])) 
net = tflearn.input_data(shape=[None, 50, 300]) 
net = tflearn.fully_connected(net, mean) 
net = tflearn.fully_connected(net, mean) 
net = tflearn.fully_connected(net, len(train_y[0]), activation='softmax') 
net = tflearn.regression(net) 
# Define model and setup tensorboard 
model = tflearn.DNN(net, tensorboard_dir='tflearn_logs') 
# Start training (apply gradient descent algorithm) 
model.fit(train_x, train_y, show_metric=True) 

Aber der Fehler ich bin immer ist die folgende:

Traceback (most recent call last): 
    File "/Users/Foo/Bar/test.py", line 82, in <module> 
model.fit(train_x, train_y, show_metric=True) 
    File "/usr/local/lib/python3.5/site-packages/tflearn/models/dnn.py", line 215, in fit 
callbacks=callbacks) 
    File "/usr/local/lib/python3.5/site-packages/tflearn/helpers/trainer.py", line 336, in fit 
show_metric) 
    File "/usr/local/lib/python3.5/site-packages/tflearn/helpers/trainer.py", line 777, in _train 
feed_batch) 
    File "/usr/local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 778, in run 
run_metadata_ptr) 
    File "/usr/local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 954, in _run 
np_val = np.asarray(subfeed_val, dtype=subfeed_dtype) 
    File "/usr/local/lib/python3.5/site-packages/numpy/core/numeric.py", line 531, in asarray 
return array(a, dtype, copy=False, order=order) 
ValueError: setting an array element with a sequence. 

Wahrscheinlich bin ich nicht gut definiert, Formen des Netzes. Wie kann ich es beheben?

Vielen Dank im Rat

Antwort

1

Es ist nichts falsch mit dem Netzwerk definieren, aber das Problem ist, X und Y, in erster Linie sie Liste sind, aber sie sollten Array sein, wird es besser sein, wenn Sie das erste beheben dann überprüfen die Form der Arrays, die Sie anpassen.

überprüfen diese:

# create train and test lists 
train_x = training[:,0].reshape([-1,50,300]) 
print(train_x.shape) 
train_y = training[:,1] 
+0

Es war nicht das Problem, gerade nach vorne, aber ich habe Ihre Antwort akzeptiert, da es mir den Eingang gab das Problem zu lösen, die mit den Formen des Eingangs verbunden war ... Was mir wichtig war, war zu verstehen, ob es sich um TensorFlow oder nur um eine Form handelt. Vielen Dank –