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 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): # 正确的值 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)
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: