Python Tensorflow-';无法以字节形式获取元素';错误

Python Tensorflow-';无法以字节形式获取元素';错误,python,python-3.x,tensorflow,neural-network,deep-learning,Python,Python 3.x,Tensorflow,Neural Network,Deep Learning,以下代码: import numpy as np import tensorflow as tf from sklearn.model_selection import train_test_split import pandas as pd # DATA PREPARE df = pd.read_csv('housing.csv') df = df.dropna() print(df.head) print(df.describe()) print(df.info()) # NOR

以下代码:

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



# DATA PREPARE
df = pd.read_csv('housing.csv')
df = df.dropna()
print(df.head)
print(df.describe())
print(df.info())



# NORMALIZATION
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaler.fit(df[['housing_median_age', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income',
               'median_house_value']])
df_scaled_cols = scaler.transform(df[['housing_median_age', 'total_rooms', 'total_bedrooms',
                                      'population', 'households', 'median_income', 'median_house_value']])
df_scaled_cols = pd.DataFrame(data=df_scaled_cols, columns=['housing_median_age', 'total_rooms', 'total_bedrooms',
                                                            'population', 'households', 'median_income',
                                                            'median_house_value'])

df = pd.concat([df_scaled_cols, df['ocean_proximity']], axis=1)



# DATAFRAME INTO X AND Y -> TRAIN TEST SPLIT
x_data = df[['housing_median_age', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income',
             'ocean_proximity']]
y_label = df['median_house_value']

X_train, X_test, y_train, y_test = train_test_split(x_data, y_label, test_size=0.3)



# FEATURE COLUMNS FROM DATA

m_age = tf.feature_column.numeric_column('housing_median_age')
rooms = tf.feature_column.numeric_column('total_rooms')
bedrooms = tf.feature_column.numeric_column('total_bedrooms')
population = tf.feature_column.numeric_column('population')
households = tf.feature_column.numeric_column('households')
income = tf.feature_column.numeric_column('median_income')
ocean = tf.feature_column.categorical_column_with_hash_bucket('ocean_proximity', hash_bucket_size=10)
embedded_ocean = tf.feature_column.embedding_column(ocean, dimension=4)

feat_cols = [m_age, rooms, bedrooms, population, households, income, embedded_ocean]



# 3 INPUT FUNCTIONS

train_input_func = tf.estimator.inputs.pandas_input_fn(x=X_train, y=y_train, batch_size=10, num_epochs=1000,
                                                       shuffle=True)
test_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test, y=y_test, batch_size=10, num_epochs=1, shuffle=False)
predict_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test, batch_size=10, num_epochs=1, shuffle=False)



# DNN_Reg MODEL

dnn_model = tf.estimator.DNNRegressor(hidden_units=[10,10,10], feature_columns=feat_cols)
dnn_model.train(input_fn=train_input_func, steps=1000)
导致错误:

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



# DATA PREPARE
df = pd.read_csv('housing.csv')
df = df.dropna()
print(df.head)
print(df.describe())
print(df.info())



# NORMALIZATION
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaler.fit(df[['housing_median_age', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income',
               'median_house_value']])
df_scaled_cols = scaler.transform(df[['housing_median_age', 'total_rooms', 'total_bedrooms',
                                      'population', 'households', 'median_income', 'median_house_value']])
df_scaled_cols = pd.DataFrame(data=df_scaled_cols, columns=['housing_median_age', 'total_rooms', 'total_bedrooms',
                                                            'population', 'households', 'median_income',
                                                            'median_house_value'])

df = pd.concat([df_scaled_cols, df['ocean_proximity']], axis=1)



# DATAFRAME INTO X AND Y -> TRAIN TEST SPLIT
x_data = df[['housing_median_age', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income',
             'ocean_proximity']]
y_label = df['median_house_value']

X_train, X_test, y_train, y_test = train_test_split(x_data, y_label, test_size=0.3)



# FEATURE COLUMNS FROM DATA

m_age = tf.feature_column.numeric_column('housing_median_age')
rooms = tf.feature_column.numeric_column('total_rooms')
bedrooms = tf.feature_column.numeric_column('total_bedrooms')
population = tf.feature_column.numeric_column('population')
households = tf.feature_column.numeric_column('households')
income = tf.feature_column.numeric_column('median_income')
ocean = tf.feature_column.categorical_column_with_hash_bucket('ocean_proximity', hash_bucket_size=10)
embedded_ocean = tf.feature_column.embedding_column(ocean, dimension=4)

feat_cols = [m_age, rooms, bedrooms, population, households, income, embedded_ocean]



# 3 INPUT FUNCTIONS

train_input_func = tf.estimator.inputs.pandas_input_fn(x=X_train, y=y_train, batch_size=10, num_epochs=1000,
                                                       shuffle=True)
test_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test, y=y_test, batch_size=10, num_epochs=1, shuffle=False)
predict_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test, batch_size=10, num_epochs=1, shuffle=False)



# DNN_Reg MODEL

dnn_model = tf.estimator.DNNRegressor(hidden_units=[10,10,10], feature_columns=feat_cols)
dnn_model.train(input_fn=train_input_func, steps=1000)
回溯(最近一次调用上次):文件 “C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\client\session.py”, 第1278行,打电话 返回fn(*args)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\client\session.py”, 第1263行,在运行中 选项、提要、获取列表、目标列表、运行元数据)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\client\session.py”, 第1350行,输入呼叫会话运行 运行\u元数据)tensorflow.python.framework.errors\u impl.InternalError:无法获取 元素作为字节

在处理上述异常期间,发生了另一个异常:

回溯(最近一次调用上次):文件 “C:/Users/Admin/Documents/pycharm项目/TF_回归_项目/Project.py”, 第69行,在 dnn\u model.train(input\u fn=train\u input\u func,steps=1000)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\estimator\estimator.py”, 376号线,火车上 loss=self.\u train\u model(输入、钩子、保存侦听器)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\estimator\estimator.py”, 1145号线,列车模型 返回self.\u train\u model\u默认(输入\u fn、挂钩、保存\u侦听器)文件 “C:\Users\Admin\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\estimator\estimator.py”, 第1173行,列车模式默认 保存_侦听器)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\estimator\estimator.py”, 1451号线,带估算器的列车 _,loss=mon_sess.run([estimator_spec.train_op,estimator_spec.loss])文件 “C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”, 第695行,在退出中 self.\u close\u内部(异常类型)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”, 第732行,内部关闭 self.\u sess.close()文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”, 第980行,关闭 self.\u sess.close()文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”, 第1124行,关闭 忽略文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\training\coordinator.py”, 第389行,在join中 重新播放(*self.\u exc\u info\u to\u raise)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\six.py”, 第692行,重新播放 提升价值。使用回溯(tb)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\estimator\inputs\queues\feed\u queue\u runner.py”, 第94行,正在运行 运行(enqueue_op,feed_dict=feed_dict)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\client\session.py”, 第877行,运行中 运行元数据(ptr)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\client\session.py”, 1100号线,正在运行 feed\u dict\u tensor,options,run\u metadata)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\client\session.py”, 第1272行,正在运行 运行元数据)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\client\session.py”, 第1291行,在通话中 提升类型(e)(节点定义、操作、消息)tensorflow.python.framework.errors\u impl.InternalError:无法获取 元素作为字节


内部有什么问题?

问题在于规范化

我没有使用sklearn方法,而是执行了以下操作:

df[['housing_median_age', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income',
    'median_house_value']] = df[['housing_median_age', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income',
               'median_house_value']].apply(lambda x: (x-x.min()) / (x.max()-x.min()))
总之,我做了和sklearn一样的事情,但是是手动的——用lambda