【问题标题】:ValueError: Cannot convert a partially known TensorShape to a Tensor: (?,)ValueError:无法将部分已知的 TensorShape 转换为张量:(?,)
【发布时间】:2018-04-23 23:23:36
【问题描述】:

我收到错误,指定“ValueError: Cannot convert a partial known TensorShape to a Tensor: (?,)” 我只是想获得预测结果,但我无法运行 fit 方法。(estimator.fit(input_fn=get_input_fn_train(), steps=10000)我在尝试运行此代码时遇到错误。我有 10000 行和 8 个 int 列。我现在删除了字符串列。 (x_train.shape) -->(8000, 8).y_train.shape--> (8000,). 什么形状?我正在谷歌搜索,但我找不到有用的东西。我该怎么办?我错过了什么?以下所有代码。谢谢。

import pandas as pd
import tensorflow as tf
import numpy as np
import tempfile
from sklearn.model_selection import train_test_split

def split_data(data, rate, label):
    data = data.dropna()

    train_data, test_data = train_test_split(data, test_size=rate)

    train_label = train_data[label]
    train_data = train_data.drop(label, 1)

    test_label = test_data[label]
    test_data = test_data.drop(label, 1)
    return train_data, train_label, test_data, test_label


LABEL="Exited"


data = pd.read_csv("Churn_Modelling.csv", skipinitialspace=True, header=0)

data.drop("Surname", axis=1, inplace=True)
data.drop("RowNumber", axis=1, inplace=True)
data.drop("CustomerId", axis=1, inplace=True)
data.drop("Geography", axis=1, inplace=True)
data.drop("Gender", axis=1, inplace=True)

x_train, y_train, x_test, y_test = split_data(data, 0.20, LABEL)



def get_input_fn_train():
        input_fn = tf.estimator.inputs.pandas_input_fn(
            x=x_train.astype('float64'),
            y=y_train.astype('float32'),
            shuffle=False
        )
        return input_fn

def get_input_fn_test():
        input_fn = tf.estimator.inputs.pandas_input_fn(
            x=x_test.astype('float64'),
            y=y_test.astype('float32'),
            shuffle=False
        )
        return input_fn


feature_columns = tf.contrib.learn.infer_real_valued_columns_from_input_fn(
                                                       get_input_fn_train())


model_dir = tempfile.mkdtemp()
estimator = tf.contrib.learn.SVM(
example_id_column=tf.constant(np.arange(len(y_train))),
feature_columns=feature_columns, l2_regularization=10.0,model_dir=model_dir)                                                       

estimator.fit(input_fn=get_input_fn_train(), steps=10000) 
#(I am getting  error this line)


results=estimator.evaluate(input_fn=get_input_fn_test(), steps=1)


for key in sorted(results):
  print("%s: %s" % (key, results[key]))


pred=list(estimator.predict(input_fn=get_input_fn_test()))

【问题讨论】:

    标签: python machine-learning tensorflow svm


    【解决方案1】:

    我不知道是否还有其他问题,但您遇到的一个问题是SVMexample_id_column 参数需要是一个字符串。它是表示示例 id 的特征列的名称。在您的代码中,它是一个整数张量。见https://www.tensorflow.org/api_docs/python/tf/contrib/learn/SVM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-11
      • 2023-04-08
      • 2016-05-19
      • 2021-01-27
      • 2017-08-06
      • 2020-10-22
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多