首页 文章

Tensorflow - 'Unable to get element as bytes'错误

提问于
浏览
3

The following code:

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)

Causes the error:

Traceback(最近一次调用最后一次):文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py”,第1278行,在_do_call返回fn(* args)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py”,第1263行,在_run_fn选项中,feed_dict ,fetch_list,target_list,run_metadata)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py”,第1350行,在_call_tf_sessionrun run_metadata中) tensorflow.python.framework.errors_impl.InternalError:无法将元素作为字节 . 在处理上述异常期间,发生了另一个异常:Traceback(最近一次调用最后一次):文件“C:/Users/Admin/Documents/PycharmProjects/TF_Regression_Project/project.py”,第69行,在dnn_model.train中(input_fn = train_input_func ,steps = 1000)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ estimator \ estimator.py”,第376行,在train loss = self中 . _train_model(input_fn,hooks,saving_listeners)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ estimator \ estimator.py”,第1145行,在_train_model中返回self._train_model_default(input_fn,hooks,saving_listeners)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ estimator \ estimator.py”,第1173行, _train_model_default saving_listeners)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ estimator \ estimator.py”,第1451行,_train_with_estimator_s pec _,loss = mon_sess.run([estimator_spec.train_op,estimator_spec.loss])文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ training \ monitored_session.py“,第695行,退出self._close_internal(exception_type)文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ training \ monitored_session.py “,第732行,在_close_internal self._sess.close()文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ training \ monitored_session.py“,第980行,关闭self._sess.close()文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ training \ monitored_session.py”,第1124行,关闭ignore_live_threads = True)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ training \ coordinator.py”,第389行,在join 6中 . reraise(* self._exc_info_to_raise)文件“C:\ Users \ Admin \ AppData \ Local \ Programs \ Pyth在\ Python36 \ lib \ site-packages \ six.py“,第692行,重新提升value.with_traceback(tb)文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site- packages \ tensorflow \ python \ estimator \ inputs \ queues \ feeding_queue_runner.py“,第94行,在_run sess.run(enqueue_op,feed_dict = feed_dict)文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py“,第877行,运行run_metadata_ptr)文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py“,第1100行,在_run feed_dict_tensor,options,run_metadata中)文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py“,第1272行,在_do_run run_metadata中)文件”C:\ Users \ Admin \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tensorflow \ python \ client \ session.py“ ,第1291行,_do_call引发类型(e)(node_def,op,message)tensorflow.python.framework.errors_impl.InternalE rror:无法将元素作为字节 .

What is wrong inside?

1 回答

  • 1

    问题是规范化 .

    我没有使用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 .

相关问题