def testAndValidate(predict_index=0, dis_k=1): # 正确的值 multilabel_list = pre_data_utils.preMultiLabels( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu, isTest=True) multilabel_list = multilabel_list[pre_data_utils. test_last_index:][predict_index] true_out = [int(i) for i in multilabel_list] # 原输入 dataList, rwld_list = pre_data_utils.preDataAndReWenLengDui( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu) dataList = dataList[pre_data_utils.test_last_index:][ predict_index] # 从倒数第10个样本作为测试样本 pre_list = pre_data_utils.guiyiDivideX( [dataList], 10.0) # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 rwld_list = rwld_list[pre_data_utils.test_last_index:][predict_index] pre_list1 = pre_data_utils.guiyiDivideX([rwld_list], 10.0) rema, rema1, lengma, lengma1, wenma, wenma1, count_argsort = pre_data_utils.countReWenLeng( dataList) # biao_cunt=[str(index)+"("+str(unmber)+")" for index, unmber in enumerate(count)] out = predict_multilabel([pre_list, pre_list1], dis_k) print("dataList", dataList) print("rwld_list", rwld_list) print('全:{}'.format(count_argsort)) print('热:{} 温:{} 冷:{} 热对:{} 温对:{} 冷对:{} '.format( rema, wenma, lengma, rema1, wenma1, lengma1)) print("true_out", true_out) print("out", out)
def testAndValidate(predict_index=0, dis_k=1): traindata_list, multilabel_list = pre_data_utils.preDataZuHe( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu) dataList = traindata_list[pre_data_utils.test_last_index:][predict_index] label_list = multilabel_list[pre_data_utils. test_last_index:][predict_index] zuhe_list_x, zuhe_list_y = pre_data_utils.genZuheData( [dataList], [label_list], pre_data_utils.zuhe_len) true_out = zuhe_list_y[0] true_out = [int(i) for i in true_out] # 正确的值 out_list = [] for zuhe_x in zuhe_list_x: train_list = zuhe_x # 原输入 pre_list = pre_data_utils.guiyiDivideX( [train_list], 10.0) # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 out = str(predict_multilabel(pre_list, 3)) out_list.append(out) # 找出次数最多的元素。 result = Counter(out_list) most_common = result.most_common(dis_k) result_list = [] for item in most_common: result_list.append(list(item)[0]) print("train_list", train_list) print("true_out", true_out) # print("most_common", most_common) print("result_list", result_list)
def testAndValidate(predict_index=0, dis_k=1): # 正确的值 multilabel_list = pre_data_utils.preMultiLabels( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu, isTest=True) multilabel_list = multilabel_list[pre_data_utils. test_last_index:][predict_index] true_out = [int(i) for i in multilabel_list] # 原输入 dataList = pre_data_utils.preDataForMatrix( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu) dataList = dataList[pre_data_utils.test_last_index:][ predict_index] # 从倒数第10个样本作为测试样本 pre_list = pre_data_utils.guiyiDivideX( [dataList], 1.0) # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 rema, rema1, lengma, lengma1, wenma, wenma1, count_argsort = pre_data_utils.countReWenLeng( dataList) out = predict_multilabel(pre_list, dis_k) print("dataList", dataList) print('全:{}'.format(count_argsort)) print('热:{} 温:{} 冷:{} 热对:{} 温对:{} 冷对:{} '.format( rema, wenma, lengma, rema1, wenma1, lengma1)) print("true_out", true_out) print("out", out)
def predict(display_k=3): dataList = pre_data_utils.read_txt_data_predict1(isZu) pre_list = pre_data_utils.guiyiDivideX( [dataList], 10.0) # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 out = predict_multilabel(pre_list, display_k) print("source_list", dataList) print("out", out)
def testAndValidate(predict_index=0, k=4, display_k=2): # 正确的值 tgt_in, tgt_out = pre_data_utils.preLabels1(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len) tgt_out = tgt_out[pre_data_utils.test_last_index:][predict_index] true_out = tgt_out[0:-1] # 原输入 source_list = pre_data_utils.preDataAdd0(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len) source_list = source_list[pre_data_utils.test_last_index:][predict_index] # 从倒数第10个样本作为测试样本 # 原输入+1 add1_list = pre_data_utils.preDataJiouDaxiao012(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len) add1_list = add1_list[pre_data_utils.test_last_index:][predict_index] # 从倒数第10个样本作为测试样本 # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 encoder_input = pre_data_utils.guiyiDivideX([add1_list],7.0) out = predict_multilabel(encoder_input, encoder_infer, decoder_infer, pre_data_utils.tgt_out_len, k, display_k) print("source_list", source_list) print("true_out", true_out) # print("add1_list", add1_list) print("out", out)
def testAndValidate(predict_index=0, dis_k=1): # 正确的值 multilabel_list = pre_data_utils.preMultiLabels( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu, isTest=True) multilabel_list = multilabel_list[pre_data_utils. test_last_index:][predict_index] true_out = [int(i) for i in multilabel_list] # 原输入 dataList = pre_data_utils.preDataAdd0(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu) dataList = dataList[pre_data_utils.test_last_index:][ predict_index] # 从倒数第10个样本作为测试样本 pre_list = pre_data_utils.guiyiDivideX( [dataList], 10.0) # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 out = predict_multilabel(pre_list, dis_k) print("dataList", dataList) print("true_out", true_out) print("out", out)
# 训练数据处理 traindata_list, multilabel_list = pre_data_utils.preDataZuHe(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len,isZu) print("traindata_list数量:", len(traindata_list)) print("multilabel_list数量:",len(multilabel_list)) dataList = traindata_list[pre_data_utils.train_first_index:pre_data_utils.train_last_index] # 从0至倒数第10个样本作为训练,剩下的作为测试样本 label_list = multilabel_list[pre_data_utils.train_first_index:pre_data_utils.train_last_index] print("dataList数量:", len(dataList)) print("label_list数量:",len(label_list)) zuhe_list_x, zuhe_list_y = pre_data_utils.genZuheData(dataList, label_list, pre_data_utils.zuhe_len) print("zuhe_list_x数量:", len(zuhe_list_x)) print("zuhe_list_y数量:",len(zuhe_list_y)) # 训练数据 ,以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 传入4维列表 4维度list转数组 train_list = pre_data_utils.guiyiDivideX(zuhe_list_x, 10.0) # 标签(多标签)处理 multilabel_vec = pre_data_utils.gen_multilabel_vec(zuhe_list_y, isZu) # Keras中的6种accuracy介绍:https://zhuanlan.zhihu.com/p/95293440 model_train = cnn_multilabel_net.CNNMultiLabelZuHeModel(piece_len=pre_data_utils.zuhe_len, piece_width=3, depth=1, isZu=isZu) int_lr = 0.1 optimizer = keras.optimizers.Adam(lr=int_lr, decay=int_lr / pre_data_utils.EPOCH) model_train.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy']) model_train.summary() # 自定义回调类,当loss小于某个值时,学习率设为0,不再更新,避免越过最优值 class LossHistory(Callback): # 继承自Callback类 def on_epoch_end(self, batch, logs={}): print("\r")
from py_nn_999.net import cnn_multilabel_net from tensorflow import keras from py_nn_999.utils import pre_data_utils from tensorflow.keras.callbacks import Callback import tensorflow.keras.backend as K isZu = pre_data_utils.isZu # 是否组选 # 训练数据处理 dataList = pre_data_utils.preDataAndRWL1(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu) dataList = dataList[pre_data_utils.train_first_index:pre_data_utils.train_last_index] # 从0至倒数第10个样本作为训练,剩下的作为测试样本 train_list = pre_data_utils.guiyiDivideX(dataList, 1.0) # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 传入4维列表 4维度list转数组 # 标签(多标签)处理 multilabel_list = pre_data_utils.preMultiLabels(pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len, isZu) #数据载入 multilabel_list = multilabel_list[pre_data_utils.train_first_index:pre_data_utils.train_last_index] # 从0至倒数第10个样本作为训练,剩下的作为测试样本 multilabel_vec = pre_data_utils.gen_multilabel_vec(multilabel_list, isZu) # Keras中的6种accuracy介绍:https://zhuanlan.zhihu.com/p/95293440 model_train = cnn_multilabel_net.CNNMultiLabelModel(piece_len=pre_data_utils.piece_len, piece_width=pre_data_utils.piece_width, depth=1, isZu=isZu) optimizer = keras.optimizers.Adam(0.005) # 经过测试,0.005的学习率对目前任务效果最佳 model_train.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy']) model_train.summary() # 自定义回调类,当loss小于某个值时,学习率设为0,不再更新,避免越过最优值 class LossHistory(Callback): # 继承自Callback类 def on_epoch_end(self, batch, logs={}): print("\r") loss = logs.get('loss') if loss < 5e-04:
from py_nn_999.net import cnn2lstm_multilabel_net from tensorflow import keras from py_nn_999.utils import pre_data_utils import numpy as np from tensorflow.keras.callbacks import Callback import tensorflow.keras.backend as K # 源数据(编码器数据)处理 dataList = pre_data_utils.preDataJiouDaxiao012( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len) dataList = dataList[pre_data_utils.train_first_index:pre_data_utils. train_last_index] # 从0至倒数第10个样本作为训练,剩下的作为测试样本 # 以下代码将其归一化到0-1之间的浮点数,并在最后增加一维作为通道 传入4维列表 4维度list转数组 encoder_input = pre_data_utils.guiyiDivideX(dataList, 7.0) # 目标数据(解码器数据)处理 tgt_in, tgt_out = pre_data_utils.preLabels1( pre_data_utils.read_txt_data_train(), pre_data_utils.piece_len) #数据载入 tgt_in = tgt_in[pre_data_utils.train_first_index: pre_data_utils.train_last_index] # 从0至倒数第10个样本作为训练,剩下的作为测试样本 tgt_out = tgt_out[pre_data_utils.train_first_index: pre_data_utils.train_last_index] # 从0至倒数第10个样本作为训练,剩下的作为测试样本 decoder_input = np.array(tgt_in) # decoder_output = pre_data_utils.gen_sequence_targt(tgt_out,pre_data_utils.tgt_out_len,pre_data_utils.tgt_vocab_size) decoder_output = pre_data_utils.gen_seq_multilabel(tgt_out) # Keras中的6种accuracy介绍:https://zhuanlan.zhihu.com/p/95293440 model_train = cnn2lstm_multilabel_net.CNN2LSTM_MultiLabel( pre_data_utils.piece_len, 3) optimizer = keras.optimizers.Adam(0.005) # 经过测试,0.005的学习率对目前任务效果最佳 model_train.compile(optimizer=optimizer,