Neural network ValueError:在keras中训练时无法将字符串转换为浮点
我正在尝试使用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
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,具有较小的循环。