Tflearn model.predict无法提供形状值(1,1,17)

时间:2017-11-11 12:13:54

标签: python tensorflow tflearn

我对Tensorflow和tflearn很新 到目前为止,我已经研究了几个教程并且一直在尝试将tflearn titanic示例应用于动物园动物数据集(http://archive.ics.uci.edu/ml/datasets/Zoo)。培训效果很好,但是当我尝试对我输入的数据使用model.predict时,它给出了以下错误

无法为Tensor'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])

我尝试过使用重塑,但它并没有完全奏效。我使用搜索发现的类似问题在训练阶段出现了这个错误,而不是预测。

1 个答案:

答案 0 :(得分: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])