求助:tensorflow:Layers in a Sequential model should only have a single input tensor

WARNING:tensorflow:Layers in a Sequential model should only have a single input tensor, but we receive a <class 'dict'> input: {'grade': <tf.Tensor 'ExpandDims_2:0' shape=(None, 1) dtype=string>, 'sub_grade': <tf.Tensor 'ExpandDims_9:0' shape=(None, 1) dtype=string>, 'short_emp': <tf.Tensor 'ExpandDims_8:0' shape=(None, 1) dtype=int64>, 'emp_length_num': <tf.Tensor 'ExpandDims_1:0' shape=(None, 1) dtype=int64>, 'home_ownership': <tf.Tensor 'ExpandDims_3:0' shape=(None, 1) dtype=string>, 'dti': <tf.Tensor 'ExpandDims:0' shape=(None, 1) dtype=float64>, 'purpose': <tf.Tensor 'ExpandDims_6:0' shape=(None, 1) dtype=string>, 'term': <tf.Tensor 'ExpandDims_10:0' shape=(None, 1) dtype=string>, 'last_delinq_none': <tf.Tensor 'ExpandDims_4:0' shape=(None, 1) dtype=int64>, 'last_major_derog_none': <tf.Tensor 'ExpandDims_5:0' shape=(None, 1) dtype=int64>, 'revol_util': <tf.Tensor 'ExpandDims_7:0' shape=(None, 1) dtype=float64>, 'total_rec_late_fee': <tf.Tensor 'ExpandDims_11:0' shape=(None, 1) dtype=float64>}
Consider rewriting this model with the Functional API.

新手求教!!最近在学习用神经网络分类表格数据,参考网上的教程书写但跑出了上述的错误,好像是模型输入数据类型的问题,可是是参照网上教程写的,为什么这个跑不出来?怎么更改模型才能避免出现上面的错误?下面是代码,还请各位大神帮帮忙

import numpy as np
import pandas as pd
from pandas import DataFrame
filepath="\\loans.csv"
df=pd.read_csv(filepath,header=0,encoding="utf-8")
print(df)
import numpy as np
import tensorflow as tf
from tensorflow import keras
from sklearn.model_selection import train_test_split
from tensorflow import feature_column
tf.random.set_seed(1)
train, test = train_test_split(df, test_size=0.2, random_state=1)
train, valid = train_test_split(train, test_size=0.2, random_state=1)
feature_columns = []
numeric_columns=['short_emp','emp_length_num','dti','last_delinq_none','last_major_derog_none','revol_util','total_rec_late_fee']
for header in numeric_columns:
    feature_columns.append(feature_column.numeric_column(header))
categorical_columns = ['grade','sub_grade','home_ownership','purpose','term']
def get_one_hot_from_categorical(colname):
  categorical = feature_column.categorical_column_with_vocabulary_list(colname, train[colname].unique().tolist())
  return feature_column.indicator_column(categorical)
for col in categorical_columns:
  feature_columns.append(get_one_hot_from_categorical(col))
def df_to_tfdata(df, shuffle=True, batch_size=1000):
    df = df.copy()
    labels = df.pop('safe_loans')
    ds = tf.data.Dataset.from_tensor_slices((dict(df), labels))
    if shuffle:
        ds = ds.shuffle(buffer_size=len(df), seed=1)
    ds = ds.batch(batch_size)
    return ds
train_ds = df_to_tfdata(train)
valid_ds = df_to_tfdata(valid, shuffle=False)
test_ds = df_to_tfdata(test, shuffle=False)
from tensorflow.keras import layers
feature_layer = layers.DenseFeatures(tf.tuple(feature_columns));feature_layer
model = keras.Sequential([
    feature_layer,
    layers.Dense(1000, activation='relu'),
    layers.Dense(500, activation='relu'),
    layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit(train_ds,
          validation_data=valid_ds,
          epochs=3)
model.summary()
model.evaluate(test_ds)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值