2017-11-11 119 views
1

我对Tensorflow和tflearn很新颖 到目前为止,我已经研究了几个教程,并一直试图将tflearn泰坦尼克号应用于动物园动物数据集(http://archive.ics.uci.edu/ml/datasets/Zoo)。培训工作很好,但是当我尝试对我输入的数据尝试使用model.predict时,出现以下错误Tflearn model.predict无法提供形状的值(1,1,17)

无法提供张量'InputData/X:0'的形状值(1,1,17) ,它具有形状 '(?16)'

这里的Python代码

from __future__ import print_function 

import numpy as np 
import tflearn 

# Load CSV file, indicate that the first column represents labels 
from tflearn.data_utils import load_csv 
data, labels = load_csv('zoo.csv', target_column=-1, 
         categorical_labels=True, n_classes=8) 


# Preprocessing function 
def preprocess(data, columns_to_ignore): 
    # Sort by descending id and delete columns 
    for id in sorted(columns_to_ignore, reverse=True): 
     [r.pop(id) for r in data] 
    return np.array(data, dtype=np.float32) 

# Ignore 'name' and 'ticket' columns (id 1 & 6 of data array) 
to_ignore=[0] 

# Preprocess data 
data = preprocess(data, to_ignore) 

# Build neural network 
net = tflearn.input_data(shape=[None,16]) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 8, activation='softmax') 
net = tflearn.regression(net) 


# Define model 
model = tflearn.DNN(net) 
# Start training (apply gradient descent algorithm) 
model.fit(data, labels, n_epoch=1, validation_set=0.1, shuffle=True, batch_size=17, show_metric=True) 

ant = ['ant', 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 8, 0, 0, 0] 
# Preprocess data 
ant = preprocess([ant], to_ignore) 
# Predict surviving chances (class 1 results) 
pred = model.predict([ant]) 
print("Ant is:", pred[0]) 

我使用重塑试过了,没有相当的工作。我发现使用搜索的类似问题在训练阶段出现此错误,而不是预测。

+0

请分享一下''data'&'''vars以及'zoo.csv'的样本(没有样本数据,任何人都可以帮忙......) – desertnaut

回答

0

原来我在数据集的列数上看起来不够细心...... 如果其他人遇到类似问题或使用此示例来练习机器学习,那么这里是工作代码。

from __future__ import print_function 

import numpy as np 
import tflearn 

# Load CSV file, indicate that the first column represents labels 
from tflearn.data_utils import load_csv 
data, labels = load_csv('zoo.csv', target_column=-1, 
         categorical_labels=True, n_classes=8) 


# Preprocessing function 
def preprocess(data, columns_to_ignore): 
    # Sort by descending id and delete columns 
    for id in sorted(columns_to_ignore, reverse=True): 
     [r.pop(id) for r in data] 
    return np.array(data, dtype=np.float32) 

# Ignore 'name' and 'ticket' columns (id 1 & 6 of data array) 
to_ignore=[0] 

# Preprocess data 
data = preprocess(data, to_ignore) 

# Build neural network 
net = tflearn.input_data(shape=[None,16]) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 128) 
net = tflearn.dropout(net, 1) 
net = tflearn.fully_connected(net, 8, activation='softmax') 
net = tflearn.regression(net) 


# Define model 
model = tflearn.DNN(net) 
# Start training (apply gradient descent algorithm) 
model.fit(data, labels, n_epoch=30, validation_set=0.1, shuffle=True, batch_size=20, show_metric=True) 

ant = [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 8, 0, 0, 0] 
# Preprocess data 
# ant = preprocess([ant], to_ignore) 
# ant = np.reshape(ant, (1,16)) 
# Predict surviving chances (class 1 results) 
pred = model.predict_label([ant]) 
print("Ant is:", pred[0]) 
相关问题