我正在使用Kaggle的Rossmann数据集来训练一个宽深模型。代码与教程中提供的非常相似,我只是更改了用于建模的数据。
我使用的代码如下:
"""Example code for TensorFlow Wide & Deep Tutorial using TF.Learn API."""from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport argparseimport shutilimport sysimport tempfileimport pandas as pdfrom six.moves import urllibimport tensorflow as tfCSV_COLUMNS = [ 'Store', 'DayOfWeek', 'Sales', 'Customers', 'Open', 'Promo', 'StateHoliday', 'SchoolHoliday', 'StoreType', 'Assortment', 'CompetitionDistance', 'trend', 'Max_TemperatureC', 'Mean_TemperatureC', 'Min_TemperatureC', 'Max_Humidity', 'Mean_Humidity', 'Min_Humidity']StateHoliday = tf.feature_column.categorical_column_with_vocabulary_list( "StateHoliday", ["True", "False"])StoreType = tf.feature_column.categorical_column_with_vocabulary_list( "StoreType", ['c', 'a', 'd', 'b'])Assortment = tf.feature_column.categorical_column_with_vocabulary_list( "Assortment", ['c', 'a', 'b'])CompetitionDistance = tf.feature_column.categorical_column_with_hash_bucket( "CompetitionDistance", hash_bucket_size=1000)Customers = tf.feature_column.categorical_column_with_hash_bucket( "Customers", hash_bucket_size=1000)Store = tf.feature_column.categorical_column_with_hash_bucket( "Store", hash_bucket_size=1000)trend = tf.feature_column.numeric_column("trend")Max_TemperatureC = tf.feature_column.numeric_column("Max_TemperatureC")Mean_TemperatureC = tf.feature_column.numeric_column("Mean_TemperatureC")Min_TemperatureC = tf.feature_column.numeric_column("Min_TemperatureC")Max_Humidity = tf.feature_column.numeric_column("Max_Humidity")Mean_Humidity = tf.feature_column.numeric_column("Mean_Humidity")Min_Humidity = tf.feature_column.numeric_column("Min_Humidity")crossed_columns = [ tf.feature_column.crossed_column( ["Assortment", "StoreType"], hash_bucket_size=1000)]deep_columns = [ tf.feature_column.indicator_column("DayOfWeek"), tf.feature_column.indicator_column("Open"), tf.feature_column.indicator_column("Promo"), tf.feature_column.indicator_column("StateHoliday"), tf.feature_column.indicator_column("SchoolHoliday"), tf.feature_column.indicator_column("StoreType"), tf.feature_column.indicator_column("Assortment"), # To show an example of embedding tf.feature_column.embedding_column("CompetitionDistance", dimension=8), tf.feature_column.embedding_column("Customers", dimension=8), tf.feature_column.embedding_column("Store", dimension=8), trend, Max_TemperatureC, Mean_TemperatureC, Min_TemperatureC, Max_Humidity, Mean_Humidity, Min_Humidity]def build_estimator(model_dir): """Build an estimator.""" m = tf.estimator.DNNLinearCombinedClassifier( model_dir=model_dir, linear_feature_columns=crossed_columns, dnn_feature_columns=deep_columns, dnn_hidden_units=[100, 50]) return mdef input_fn(data_file, num_epochs, shuffle): df_data = pd.read_csv( "D:/Rossmann/Rossmann_Data/" + data_file + ".csv", names=CSV_COLUMNS, skipinitialspace=True, engine="python", skiprows=1) # remove NaN elements df_data = df_data.dropna(how="any", axis=0) print(df_data.dtypes) df_data = df_data.sort(['Sales'], ascending=[True]) labels = df_data["Sales"].apply(lambda x: 1 if x >= 20000 else 0) return tf.estimator.inputs.pandas_input_fn( x=df_data, y=labels, batch_size=100, num_epochs=num_epochs, shuffle=shuffle, num_threads=5)model_dir = "D:/Rossmann/Rossmann_Data"m = build_estimator(model_dir)m.train( input_fn=input_fn("df1", num_epochs=None, shuffle=True), steps=2000)
但不幸的是,我遇到了以下错误。
Traceback (most recent call last): File "timeSeriesPredictionUsingEmbedding2.py", line 121, in <module> steps=2000) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py", line 241, in train loss = self._train_model(input_fn=input_fn, hooks=hooks) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py", line 630, in _train_model model_fn_lib.ModeKeys.TRAIN) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py", line 615, in _call_model_fn model_fn_results = self._model_fn(features=features, **kwargs) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\estimator\canned\dnn_linear_combined.py", line 395, in _model_fn config=config) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\estimator\canned\dnn_linear_combined.py", line 156, in _dnn_linear_combined_model_fn feature_columns=dnn_feature_columns) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\feature_column\feature_column.py", line 207, in input_layer _check_feature_columns(feature_columns) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\feature_column\feature_column.py", line 1662, in _check_feature_columns if column.name in name_to_column: File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\feature_column\feature_column.py", line 2453, in name return '{}_indicator'.format(self.categorical_column.name)AttributeError: 'str' object has no attribute 'name'
请问您能指导我一下这个错误出在哪里吗?当我运行您的代码时,它运行得非常完美。
谢谢!
回答: