コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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: