Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow抛出;类型错误:不可损坏的类型:';列表'&引用;错误_Python_Tensorflow_Machine Learning - Fatal编程技术网

Python Tensorflow抛出;类型错误:不可损坏的类型:';列表'&引用;错误

Python Tensorflow抛出;类型错误:不可损坏的类型:';列表'&引用;错误,python,tensorflow,machine-learning,Python,Tensorflow,Machine Learning,我在学习Tensorflow。下面是我的代码。代码使用一些特性建立线性回归模型,并试图预测MPG(燃料费用) 代码的第一部分(数据集准备)准备用于培训的数据集。第二部分(Begin Tensorflow)尝试构建和训练一个线性回归器 我遇到的问题是,当我调用线性回归器上的列函数时,抛出了一个错误 我不知道如何修正这个错误。我不知道为什么“不可破坏列表”会影响训练 请对此提供一些见解。谢谢 from __future__ import absolute_import, division, prin

我在学习Tensorflow。下面是我的代码。代码使用一些特性建立线性回归模型,并试图预测MPG(燃料费用)

代码的第一部分(数据集准备)准备用于培训的数据集。第二部分(Begin Tensorflow)尝试构建和训练一个线性回归器

我遇到的问题是,当我调用线性回归器上的列函数时,抛出了一个错误

我不知道如何修正这个错误。我不知道为什么“不可破坏列表”会影响训练

请对此提供一些见解。谢谢

from __future__ import absolute_import, division, print_function
import pathlib
import pandas as pd
import seaborn as sns
import tensorflow as tf
from tensorflow import keras
# tf.enable_eager_execution() # turn eager model on; this should only be called ONCE!
print(tf.__version__)
#-----------------------------------------------------
## Dataset preparation
# read dataset and preview
dataset_path = keras.utils.get_file("auto-mpg.data", "https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")

column_names = ['MPG','Cylinders','Displacement','Horsepower','Weight',
                'Acceleration', 'Model Year', 'Origin'] 
raw_dataset = pd.read_csv(dataset_path, names=column_names,
                      na_values = "?", comment='\t',
                      sep=" ", skipinitialspace=True)
dataset = raw_dataset.copy()

# erase NaN rows
dataset = dataset.dropna()

# Origin column is not magnitude meaningful, don't use this as feature!
origin = dataset.pop('Origin')

# Separate train & test dataset
dataset_train = dataset.sample(frac=0.8, random_state = 0)
dataset_test  = dataset.drop(dataset_train.index)

#-----------------------------------------------------
## Begin Tensorflow 
# build input fn
def train_input_fn(df, label_name):
  """
  Argus:
    df: pandas dataframe
    label_name: name of label column
  return:
    A function: <function tensorflow.python.estimator.inputs.pandas_io.input_fn>
  """
  return tf.estimator.inputs.pandas_input_fn(
    x = df,
    y = df[label_name],
    batch_size = 32,
    num_epochs = 5,
    shuffle    = True,
    queue_capacity = 1000,
    num_threads = 1
  )

# define model
feature_names = ['Cylinders', 'Displacement', 'Horsepower', 'Weight', 'Acceleration', 'Model Year'] 
feature_cols_tensor = [tf.feature_column.numeric_column(feature_names)]  # turn the string list into tensor object
linear_regressor = tf.estimator.LinearRegressor(feature_columns = feature_cols_tensor)

linear_regressor.train(
  train_input_fn(dataset_train, 'MPG'), 
  steps = 100
)
来自未来导入绝对导入、分割、打印功能
导入路径库
作为pd进口熊猫
导入seaborn作为sns
导入tensorflow作为tf
从tensorflow进口keras
#tf.enable_eager_execution()#打开eager模型;这应该只调用一次!
打印(tf.\U版本\U)
#-----------------------------------------------------
##数据集准备
#读取数据集并预览
dataset\u path=keras.utils.get\u文件(“auto-mpg.data”https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")
列名称=['MPG'、'Cylinder'、'Displacement'、'Horsepower'、'Weight',
“加速”、“车型年款”、“原点”]
原始数据集=pd.read\u csv(数据集路径,名称=列名称,
na_values=“?”,注释=“\t”,
sep=“”,skipinitialspace=True)
数据集=原始数据集。复制()
#删除NaN行
dataset=dataset.dropna()
#“原点”列没有意义,请不要将其用作功能!
origin=dataset.pop(“origin”)
#单独的列车和测试数据集
dataset\u train=dataset.sample(分形=0.8,随机状态=0)
dataset\u test=dataset.drop(dataset\u train.index)
#-----------------------------------------------------
##开始张量流
#构建输入fn
def序列输入(df,标签名称):
"""
阿古斯:
数据帧
标签名称:标签列的名称
返回:
功能:
"""
返回tf.estimator.inputs.pandas\u input\u fn(
x=df,
y=df[标签名称],
批次大小=32,
num_epochs=5,
洗牌=正确,
队列容量=1000,
线程数=1
)
#定义模型
特性名称=[‘气缸’、‘排量’、‘马力’、‘重量’、‘加速度’、‘车型年’]
feature_cols_tensor=[tf.feature_column.numeric_column(feature_names)]#将字符串列表转换为tensor对象
线性回归器=tf.估计量.线性回归器(特征列=特征列=特征张量)
线性回归器(
列车输入(数据集列车“MPG”),
步数=100
)
以下是错误消息

INFO:tensorflow:Calling model_fn.

TypeErrorTraceback (most recent call last)
<ipython-input-14-c1814cca00b6> in <module>()
----> 1 linear_regressor.train(train_input_fn(dataset_train_norm, 'MPG'), steps = 100)

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in train(self, input_fn, hooks, steps, max_steps, saving_listeners)
    361 
    362     saving_listeners = _check_listeners_type(saving_listeners)
--> 363     loss = self._train_model(input_fn, hooks, saving_listeners)
    364     logging.info('Loss for final step: %s.', loss)
    365     return self

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in _train_model(self, input_fn, hooks, saving_listeners)
    841       return self._train_model_distributed(input_fn, hooks, saving_listeners)
    842     else:
--> 843       return self._train_model_default(input_fn, hooks, saving_listeners)
    844 
    845   def _train_model_default(self, input_fn, hooks, saving_listeners):

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in _train_model_default(self, input_fn, hooks, saving_listeners)
    854       worker_hooks.extend(input_hooks)
    855       estimator_spec = self._call_model_fn(
--> 856           features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)
    857       return self._train_with_estimator_spec(estimator_spec, worker_hooks,
    858                                              hooks, global_step_tensor,

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in _call_model_fn(self, features, labels, mode, config)
    829 
    830     logging.info('Calling model_fn.')
--> 831     model_fn_results = self._model_fn(features=features, **kwargs)
    832     logging.info('Done calling model_fn.')
    833 

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/canned/linear.pyc in _model_fn(features, labels, mode, config)
    430           optimizer=optimizer,
    431           partitioner=partitioner,
--> 432           config=config)
    433 
    434     super(LinearRegressor, self).__init__(

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/canned/linear.pyc in _linear_model_fn(features, labels, mode, head, feature_columns, optimizer, partitioner, config)
    155     logit_fn = _linear_logit_fn_builder(
    156         units=head.logits_dimension, feature_columns=feature_columns)
--> 157     logits = logit_fn(features=features)
    158 
    159     return head.create_estimator_spec(

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/canned/linear.pyc in linear_logit_fn(features)
     96         feature_columns=feature_columns,
     97         units=units,
---> 98         cols_to_vars=cols_to_vars)
     99     bias = cols_to_vars.pop('bias')
    100     if units > 1:

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/feature_column/feature_column.pyc in linear_model(features, feature_columns, units, sparse_combiner, weight_collections, trainable, cols_to_vars)
    409       nor `_CategoricalColumn`.
    410   """
--> 411   feature_columns = _clean_feature_columns(feature_columns)
    412   for column in feature_columns:
    413     if not isinstance(column, (_DenseColumn, _CategoricalColumn)):

/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/feature_column/feature_column.pyc in _clean_feature_columns(feature_columns)
   2231   name_to_column = dict()
   2232   for column in feature_columns:
-> 2233     if column.name in name_to_column:
   2234       raise ValueError('Duplicate feature column name found for columns: {} '
   2235                        'and {}. This usually means that these columns refer to '

TypeError: unhashable type: 'list'
INFO:tensorflow:Calling model\u fn。
TypeErrorTraceback(最近一次呼叫上次)
在()
---->1个线性回归器序列(序列输入fn(数据集序列范数,'MPG'),步长=100)
/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in-train(self、input\fn、hook、steps、max\u steps、saving\u监听器)
361
362保存\u侦听器=\u检查\u侦听器\u类型(保存\u侦听器)
-->363损失=自我训练模型(输入、挂钩、保存侦听器)
364 logging.info('最后一步丢失:%s',丢失)
365返回自我
/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in_train_模型(self、input、hook、saving_监听器)
841返回自。\列车\模型\分布式(输入\ fn、挂钩、保存\侦听器)
842其他:
-->843返回self.\u train\u model\u default(输入\u fn、钩子、保存\u侦听器)
844
845 def\U train\U model\U默认值(自我、输入、挂钩、保存侦听器):
/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in_train_model_default(self、input_fn、hook、saving_监听器)
854工人挂钩。扩展(输入挂钩)
855估计器\u spec=自我调用\u模型\u fn(
-->856功能部件、标签、型号(fn_lib.ModeKeys.TRAIN、self.config)
857带估算器规范(估算器规范、工人规范、,
858钩子,全局步进张量,
/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/estimator.pyc in_call_model_fn(self、features、label、mode、config)
829
830 logging.info('Calling model_fn'))
-->831模型结果=自身。\模型结果=特征(特征=特征,**kwargs)
832 logging.info('Done calling model_fn'))
833
/模型中的usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/canding/linear.pyc(特性、标签、模式、配置)
430优化器=优化器,
431分区器=分区器,
-->432配置=配置)
433
434超级(线性累加器,自)__(
/usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/canted/linear.pyc in_linear_model_fn(特性、标签、模式、标题、特性列、优化器、分区器、配置)
155逻辑函数=线性逻辑函数(
156个单位=head.logits\u尺寸,特征列=特征列)
-->157 logits=logit\u fn(特征=特征)
158
159返回头。创建估算器规格(
/线性逻辑功能中的usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/estimator/canding/linear.pyc
96个要素列=要素列,
97单位=单位,
--->98列至列=列至列)
99 bias=cols_to_vars.pop('bias'))
100如果单位>1:
/线性模型中的usr/local/envs/py2env/lib/python2.7/site-packages/tensorflow/python/feature\u column/feature\u column.pyc
409或“分类列”。
410   """
-->411要素列=_清洁_要素列(要素列)
412对于要素_列中的列:
feature_cols_tensor = [tf.feature_column.numeric_column(feature_names)]
feature_cols_tensor = list(map(tf.feature_column.numeric_column, feature_names))