|
本帖最后由 收鸽者 于 2019-4-24 11:21 编辑
从 keras.models 导入顺序
从 keras.layers 导入密集, Conv1D , MaxPooling1D ,降
从 keras.layers.embeddings 导入嵌入
进口 xlrd
从 keras.preprocessing 进口序列
进口熊猫作为 PD
从 keras.callbacks 导入 EarlyStopping
类 excel_read:
DEF __init__(self , excel_path , index =0):
self .data = xlrd.open_workbook(excel_path)
self .table = self .data.sheets()[index]
self .rows = self .table.nrows
def get_data(self):
result = []
for i in range(self .rows):
col = self .table.row_values(i)
result.append(col)
返回结果
def excel_one_line_to_list(path):
df = pd.read_excel(path ,header = [ 0 ] ,usecols = [ 0 ] ,) #读取项目名称列,不要列名
df_li = df.values.tolist()
result = []
对于 df_li 中的 s_li:
result.append(s_li [ 0 ])
返回结果
x_train_seq = excel_read(excel_path = r'xtrain.xlsx')。get_data()
x_train = sequence.pad_sequences(x_train_seq ,maxlen = 176)
y_train = excel_one_line_to_list(path = “ ytrain.xlsx”)
x_test_seq = excel_read(excel_path =r'xtest.xlsx')。get_data()
x_test = sequence.pad_sequences(x_test_seq ,maxlen = 176)
y_test = excel_one_line_to_list(path = “ ytest.xlsx”)def timecnn(len1 = 176 , max_features = 200 , embedding_dims = 8 , filters = 10): kernel_size = 38 model = Sequential() model.add(嵌入(max_features , embedding_dims ,input_length = len1)) model.add(Dropout(0.2)
))
model.add(Conv1D(过滤器, kernel_size ,填充 = '有效' ,激活 = 'RELU' ,步幅 = 2))
model.add(MaxPooling1D())
model.add(降(0.2))
model.add(密集(embedding_dims ,activation = 'softmax'))
返回模型
model = timecnn()
model.summary()
es = EarlyStopping(monitor = 'val_acc' ,patience = 5)
model.compile(损失 = “sparse_categorical_crossentropy” ,优化 = “亚当” ,度量 = [ '准确性' ])
的batch_size = 64
历元= 150
model.fit(x_train , y_train ,的batch_size =的batch_size ,历元 =时期,validation_split = 0.1 ,洗牌 = 假)
最后报错ValueError:检查目标时出错:期望dense_1有3个维度,但是有形状的数组(100,1 )网上找答案,说把
model.add(Dense(embedding_dims ,activation = 'softmax'))
改成
model.add(Dense(x_train.shape [:1] ,activation = 'softmax'))
还是会报错:TypeError:不支持的操作数类型for +:'int'和'tuple' 把x_train改成list list型也不对求大神指点一下
|
|