Neural network ValueError:在keras中训练时无法将字符串转换为浮点

Neural network ValueError:在keras中训练时无法将字符串转换为浮点,neural-network,keras,Neural Network,Keras,我正在尝试使用keras运行一个基本的神经网络: import numpy import pandas from keras.models import * from keras.layers import * from keras.optimizers import * dataframe = pandas.read_csv("data/mydata.csv", header=None) dataset = dataframe.values

我正在尝试使用keras运行一个基本的神经网络:

import numpy
    import pandas
    from keras.models import *
    from keras.layers import *
    from keras.optimizers import *

    dataframe = pandas.read_csv("data/mydata.csv", header=None) 
    dataset = dataframe.values
    # split into input (X) and output (Y) variables
    X = dataset[:,0:21] #X features 
    Y = dataset[:,21] # Y labels

#Define Neural network model of 10 Hidden layer with 500 Neurons each
model = Sequential()
model.add(Dense(500, input_dim=21, init='normal', activation='relu')) #Input Layer 
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 1
model.add(Dense(500, init='normal', activation='relu')) #Hidden layer 2
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 3
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 4
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 5
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 6
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 7
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 8
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 9
model.add(Dense(500, init='normal', activation='relu')) #Hidden Layer 10
model.add(Dense(1, init='normal', activation='sigmoid')) #Output later
print('Modeled Network')

# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'] ) 
 #fits the data point X, Y to the model
model.fit(X, Y, validation_split=0.3, shuffle=True, nb_epoch=50, batch_size=5000)

# serialize model to JSON
print("* Saving model to disk..")
model_json = model.to_json()
with open("models/model.json", "w") as json_file:
  json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("models/model.h5")
但是,我得到了一个错误:


ValueError:在编译过程中无法将字符串转换为浮点:“feature21”
。我对这一点很陌生,所以我不确定为什么它会尝试将字符串转换为浮点,因为数据集中的标题是关闭的,并且特性本身完全是数字的。是否已经有一个已知的简单解决方案?

我建议您自己检查一下以确定。很可能X或Y中有一些字符串值。另外,通常数组应该是numpy数组,因此如果将它们转换为numpy数组,它可能会有用。此外,听起来X有形状(batch,50),而您的模型需要形状(batch,23),因为
input\u dim=23
@Daniel我至少可以肯定.csv文件的值始终为0.12345。不过,转换它们可能会起作用,你认为什么是最好的选择?@Daniel抱歉,这只是一个旧版本的代码,数据集实际上只有21个,这是从我使用另一个集合时开始的。我建议你这样做:
对于X中的行:对于行中的项:if isinstance(item,basestring):print(“这里有一个字符串”)
。同样的情况也适用于Y,具有较小的循环。