当前位置: 首页 > news >正文

太原企业网站模板建站极速网站建设服务商

太原企业网站模板建站,极速网站建设服务商,wordpress文章页的三大标签,营销网站设计实验基于WIN10的64位系统演示 一、写在前面 截至上期#xff0c;我们一直都在做二分类的任务#xff0c;无论是之前的机器学习任务#xff0c;还是最近更新的图像分类任务。然而#xff0c;在实际工作中#xff0c;我们大概率需要进行多分类任务。例如肺部胸片可不仅仅能诊断…基于WIN10的64位系统演示 一、写在前面 截至上期我们一直都在做二分类的任务无论是之前的机器学习任务还是最近更新的图像分类任务。然而在实际工作中我们大概率需要进行多分类任务。例如肺部胸片可不仅仅能诊断肺结核还有COVID-19、细菌性病毒性肺炎等等这就涉及到图像识别的多分类任务。 本期以健康组、肺结核组、COVID-19组、细菌性病毒性肺炎组为数据集构建Mobilenet多分类模型原因还是因为它建模速度快。 同样基于GPT-4辅助编程改写过程见后面。 二、误判病例分析实战 使用胸片的数据集肺结核病人和健康人的胸片的识别。其中健康人900张肺结核病人700张COVID-19病人549张、细菌性病毒性肺炎组900张分别存入单独的文件夹中。 a直接分享代码 ######################################导入包################################### from tensorflow import keras import tensorflow as tf from tensorflow.python.keras.layers import Dense, Flatten, Conv2D, MaxPool2D, Dropout, Activation, Reshape, Softmax, GlobalAveragePooling2D, BatchNormalization from tensorflow.python.keras.layers.convolutional import Convolution2D, MaxPooling2D from tensorflow.python.keras import Sequential from tensorflow.python.keras import Model from tensorflow.python.keras.optimizers import adam_v2 import numpy as np import matplotlib.pyplot as plt from tensorflow.python.keras.preprocessing.image import ImageDataGenerator, image_dataset_from_directory from tensorflow.python.keras.layers.preprocessing.image_preprocessing import RandomFlip, RandomRotation, RandomContrast, RandomZoom, RandomTranslation import os,PIL,pathlib import warnings #设置GPU gpus tf.config.list_physical_devices(GPU)if gpus:gpu0 gpus[0] #如果有多个GPU仅使用第0个GPUtf.config.experimental.set_memory_growth(gpu0, True) #设置GPU显存用量按需使用tf.config.set_visible_devices([gpu0],GPU)warnings.filterwarnings(ignore) #忽略警告信息 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号################################导入数据集##################################### #1.导入数据 #1.导入数据 data_dir ./MTB-1 # 修改了路径 data_dir pathlib.Path(data_dir) image_count len(list(data_dir.glob(*/*))) print(图片总数为,image_count)batch_size 32 img_height 100 img_width 100train_ds image_dataset_from_directory(data_dir,validation_split0.2,subsettraining,seed12,image_size(img_height, img_width),batch_sizebatch_size)val_ds image_dataset_from_directory(data_dir,validation_split0.2,subsetvalidation,seed12,image_size(img_height, img_width),batch_sizebatch_size)class_names train_ds.class_names print(class_names) print(train_ds)#2.检查数据 for image_batch, labels_batch in train_ds:print(image_batch.shape)print(labels_batch.shape)break#3.配置数据 AUTOTUNE tf.data.AUTOTUNEdef train_preprocessing(image,label):return (image/255.0,label)train_ds (train_ds.cache().shuffle(800).map(train_preprocessing) # 这里可以设置预处理函数 # .batch(batch_size) # 在image_dataset_from_directory处已经设置了batch_size.prefetch(buffer_sizeAUTOTUNE) )val_ds (val_ds.cache().map(train_preprocessing) # 这里可以设置预处理函数 # .batch(batch_size) # 在image_dataset_from_directory处已经设置了batch_size.prefetch(buffer_sizeAUTOTUNE) )#4. 数据可视化 plt.figure(figsize(10, 8)) # 图形的宽为10高为5 plt.suptitle(数据展示)class_names [COVID-19, Normal, Pneumonia, Tuberculosis] # 修改类别标签for images, labels in train_ds.take(1):for i in range(15):plt.subplot(4, 5, i 1)plt.xticks([])plt.yticks([])plt.grid(False)# 显示图片plt.imshow(images[i])# 显示标签plt.xlabel(class_names[labels[i]-1])plt.show()######################################数据增强函数################################data_augmentation Sequential([RandomFlip(horizontal_and_vertical),RandomRotation(0.2),RandomContrast(1.0),RandomZoom(0.5,0.2),RandomTranslation(0.3,0.5), ])def prepare(ds):ds ds.map(lambda x, y: (data_augmentation(x, trainingTrue), y), num_parallel_callsAUTOTUNE)return ds train_ds prepare(train_ds)###############################导入mobilenet_v2################################ #获取预训练模型对输入的预处理方法 from tensorflow.python.keras.applications import mobilenet_v2 from tensorflow.python.keras import Input, regularizers IMG_SIZE (img_height, img_width, 3)base_model mobilenet_v2.MobileNetV2(input_shapeIMG_SIZE, include_topFalse, #是否包含顶层的全连接层weightsimagenet)inputs Input(shapeIMG_SIZE) #模型 x base_model(inputs, trainingFalse) #参数不变化 #全局池化 x GlobalAveragePooling2D()(x) #BatchNormalization x BatchNormalization()(x) #Dropout x Dropout(0.8)(x) #Dense x Dense(128, kernel_regularizerregularizers.l2(0.1))(x) # 全连接层减少到128添加 L2 正则化 #BatchNormalization x BatchNormalization()(x) #激活函数 x Activation(relu)(x) #输出层 outputs Dense(4, kernel_regularizerregularizers.l2(0.1))(x) # 输出层神经元数量修改为4 #BatchNormalization outputs BatchNormalization()(outputs) #激活函数 outputs Activation(softmax)(outputs) # 激活函数修改为softmax #整体封装 model Model(inputs, outputs) #打印模型结构 print(model.summary()) #############################编译模型######################################### #定义优化器 from tensorflow.python.keras.optimizers import adam_v2, rmsprop_v2 #from tensorflow.python.keras.optimizer_v2.gradient_descent import SGD optimizer adam_v2.Adam() #optimizer SGD(learning_rate0.001) #optimizer rmsprop_v2.RMSprop()#常用的优化器 #all_classes { # adadelta: adadelta_v2.Adadelta, # adagrad: adagrad_v2.Adagrad, # adam: adam_v2.Adam, # adamax: adamax_v2.Adamax, # experimentaladadelta: adadelta_experimental.Adadelta, # experimentaladagrad: adagrad_experimental.Adagrad, # experimentaladam: adam_experimental.Adam, # experimentalsgd: sgd_experimental.SGD, # nadam: nadam_v2.Nadam, # rmsprop: rmsprop_v2.RMSprop,#编译模型 model.compile(optimizeroptimizer,losssparse_categorical_crossentropy, # 多分类问题metrics[accuracy])#训练模型 from tensorflow.python.keras.callbacks import ModelCheckpoint, Callback, EarlyStopping, ReduceLROnPlateau, LearningRateSchedulerNO_EPOCHS 50 PATIENCE 10 VERBOSE 1# 设置动态学习率 annealer LearningRateScheduler(lambda x: 1e-5 * 0.99 ** (xNO_EPOCHS))# 设置早停 earlystopper EarlyStopping(monitorloss, patiencePATIENCE, verboseVERBOSE)# checkpointer ModelCheckpoint(mtb_4_jet_best_model_mobilenetv3samll.h5,monitorval_accuracy,verboseVERBOSE,save_best_onlyTrue,save_weights_onlyTrue)train_model model.fit(train_ds,epochsNO_EPOCHS,verbose1,validation_dataval_ds,callbacks[earlystopper, checkpointer, annealer])#保存模型 model.save(mtb_4_jet_best_model_mobilenet.h5) print(The trained model has been saved.)from tensorflow.python.keras.models import load_model train_modelload_model(mtb_4_jet_best_model_mobilenet.h5) ###########################Accuracy和Loss可视化################################# import matplotlib.pyplot as pltloss train_model.history[loss] acc train_model.history[accuracy] val_loss train_model.history[val_loss] val_acc train_model.history[val_accuracy] epoch range(1, len(loss)1)fig, ax plt.subplots(1, 2, figsize(10,4)) ax[0].plot(epoch, loss, labelTrain loss) ax[0].plot(epoch, val_loss, labelValidation loss) ax[0].set_xlabel(Epochs) ax[0].set_ylabel(Loss) ax[0].legend() ax[1].plot(epoch, acc, labelTrain acc) ax[1].plot(epoch, val_acc, labelValidation acc) ax[1].set_xlabel(Epochs) ax[1].set_ylabel(Accuracy) ax[1].legend() #plt.show() plt.savefig(loss-acc.pdf, dpi300,formatpdf)####################################混淆矩阵可视化############################# import numpy as np import matplotlib.pyplot as plt from tensorflow.python.keras.models import load_model from matplotlib.pyplot import imshow from sklearn.metrics import classification_report, confusion_matrix import seaborn as sns import pandas as pd import math from sklearn.metrics import precision_recall_fscore_support, accuracy_score# 定义一个绘制混淆矩阵图的函数 def plot_cm(labels, predictions, class_names):# 生成混淆矩阵conf_numpy confusion_matrix(labels, predictions)# 将矩阵转化为 DataFrameconf_df pd.DataFrame(conf_numpy, indexclass_names ,columnsclass_names) plt.figure(figsize(8,7))sns.heatmap(conf_df, annotTrue, fmtd, cmapBuPu)plt.title(Confusion matrix,fontsize15)plt.ylabel(Actual value,fontsize14)plt.xlabel(Predictive value,fontsize14)val_pre [] val_label [] for images, labels in val_ds:for image, label in zip(images, labels):img_array tf.expand_dims(image, 0)prediction model.predict(img_array)val_pre.append(np.argmax(prediction, axis-1))val_label.append(label.numpy()) # 需要将标签转换为 numpy 数组class_names [COVID-19, Normal, Pneumonia, Tuberculosis] # 修改为你的类别名称 plot_cm(val_label, val_pre, class_names) plt.savefig(val-cm.pdf, dpi300,formatpdf)precision_val, recall_val, f1_val, _ precision_recall_fscore_support(val_label, val_pre, averagemicro) acc_val accuracy_score(val_label, val_pre) error_rate_val 1 - acc_valprint(验证集的灵敏度召回率为,recall_val, 验证集的特异度为,precision_val, # 在多分类问题中特异度定义不明确这里我们使用精确度来代替验证集的准确率为,acc_val, 验证集的错误率为,error_rate_val,验证集的F1为,f1_val)train_pre [] train_label [] for images, labels in train_ds:for image, label in zip(images, labels):img_array tf.expand_dims(image, 0)prediction model.predict(img_array)train_pre.append(np.argmax(prediction, axis-1))train_label.append(label.numpy())plot_cm(train_label, train_pre, class_names) plt.savefig(train-cm.pdf, dpi300,formatpdf)precision_train, recall_train, f1_train, _ precision_recall_fscore_support(train_label, train_pre, averagemicro) acc_train accuracy_score(train_label, train_pre) error_rate_train 1 - acc_trainprint(训练集的灵敏度召回率为,recall_train, 训练集的特异度为,precision_train, # 在多分类问题中特异度定义不明确这里我们使用精确度来代替训练集的准确率为,acc_train, 训练集的错误率为,error_rate_train,训练集的F1为,f1_train)################################模型性能参数计算################################ from sklearn import metricsdef test_accuracy_report(model):print(metrics.classification_report(val_label, val_pre, target_namesclass_names)) score model.evaluate(val_ds, verbose0)print(Loss function: %s, accuracy: % score[0], score[1])test_accuracy_report(model)def train_accuracy_report(model):print(metrics.classification_report(train_label, train_pre, target_namesclass_names)) score model.evaluate(train_ds, verbose0)print(Loss function: %s, accuracy: % score[0], score[1])train_accuracy_report(model)################################AUC曲线绘制#################################### from sklearn import metrics from sklearn.preprocessing import LabelBinarizer import numpy as np import matplotlib.pyplot as plt from tensorflow.python.keras.models import load_model from matplotlib.pyplot import imshow from sklearn.metrics import classification_report, confusion_matrix import seaborn as sns import pandas as pd import mathdef plot_roc(name, labels, predictions, **kwargs):fp, tp, _ metrics.roc_curve(labels, predictions)plt.plot(fp, tp, labelname, linewidth2, **kwargs)plt.xlabel(False positives rate)plt.ylabel(True positives rate)ax plt.gca()ax.set_aspect(equal)# 需要将标签进行one-hot编码 lb LabelBinarizer() lb.fit([0, 1, 2, 3]) # 训练标签编码器这里设定有四个类别 n_classes 4 # 类别数量val_pre_auc [] val_label_auc []for images, labels in val_ds:for image, label in zip(images, labels): img_array tf.expand_dims(image, 0) prediction_auc model.predict(img_array)val_pre_auc.append(prediction_auc[0])val_label_auc.append(lb.transform([label])[0]) # 这里需要使用标签编码器进行编码val_pre_auc np.array(val_pre_auc) val_label_auc np.array(val_label_auc)auc_score_val [metrics.roc_auc_score(val_label_auc[:, i], val_pre_auc[:, i]) for i in range(n_classes)]train_pre_auc [] train_label_auc []for images, labels in train_ds:for image, label in zip(images, labels):img_array_train tf.expand_dims(image, 0) prediction_auc model.predict(img_array_train)train_pre_auc.append(prediction_auc[0])train_label_auc.append(lb.transform([label])[0])train_pre_auc np.array(train_pre_auc) train_label_auc np.array(train_label_auc)auc_score_train [metrics.roc_auc_score(train_label_auc[:, i], train_pre_auc[:, i]) for i in range(n_classes)]for i in range(n_classes):plot_roc(validation AUC for class {0}: {1:.4f}.format(i, auc_score_val[i]), val_label_auc[:, i] , val_pre_auc[:, i], colorred, linestyle--)plot_roc(training AUC for class {0}: {1:.4f}.format(i, auc_score_train[i]), train_label_auc[:, i], train_pre_auc[:, i], colorblue, linestyle--)plt.legend(loclower right) plt.savefig(roc.pdf, dpi300,formatpdf)for i in range(n_classes):print(Class {0} 训练集的AUC值为.format(i), auc_score_train[i], 验证集的AUC值为, auc_score_val[i])################################AUC曲线绘制-分开展示#################################### from sklearn import metrics from sklearn.preprocessing import LabelBinarizer import numpy as np import matplotlib.pyplot as plt from tensorflow.python.keras.models import load_model from matplotlib.pyplot import imshow from sklearn.metrics import classification_report, confusion_matrix import seaborn as sns import pandas as pd import mathdef plot_roc(ax, name, labels, predictions, **kwargs):fp, tp, _ metrics.roc_curve(labels, predictions)ax.plot(fp, tp, labelname, linewidth2, **kwargs)ax.plot([0, 1], [0, 1], colororange, linestyle--)ax.set_xlabel(False positives rate)ax.set_ylabel(True positives rate)ax.set_aspect(equal)# 需要将标签进行one-hot编码 lb LabelBinarizer() lb.fit([0, 1, 2, 3]) # 训练标签编码器这里设定有四个类别 n_classes 4 # 类别数量val_pre_auc [] val_label_auc []for images, labels in val_ds:for image, label in zip(images, labels): img_array tf.expand_dims(image, 0) prediction_auc model.predict(img_array)val_pre_auc.append(prediction_auc[0])val_label_auc.append(lb.transform([label])[0]) # 这里需要使用标签编码器进行编码val_pre_auc np.array(val_pre_auc) val_label_auc np.array(val_label_auc)auc_score_val [metrics.roc_auc_score(val_label_auc[:, i], val_pre_auc[:, i]) for i in range(n_classes)]train_pre_auc [] train_label_auc []for images, labels in train_ds:for image, label in zip(images, labels):img_array_train tf.expand_dims(image, 0) prediction_auc model.predict(img_array_train)train_pre_auc.append(prediction_auc[0])train_label_auc.append(lb.transform([label])[0])train_pre_auc np.array(train_pre_auc) train_label_auc np.array(train_label_auc)auc_score_train [metrics.roc_auc_score(train_label_auc[:, i], train_pre_auc[:, i]) for i in range(n_classes)]fig, axs plt.subplots(n_classes, figsize(5, 20))for i in range(n_classes):plot_roc(axs[i], validation AUC for class {0}: {1:.4f}.format(i, auc_score_val[i]), val_label_auc[:, i] , val_pre_auc[:, i], colorred, linestyle--)plot_roc(axs[i], training AUC for class {0}: {1:.4f}.format(i, auc_score_train[i]), train_label_auc[:, i], train_pre_auc[:, i], colorblue, linestyle--)axs[i].legend(loclower right)plt.tight_layout() plt.savefig(roc.pdf, dpi300,formatpdf)for i in range(n_classes):print(Class {0} 训练集的AUC值为.format(i), auc_score_train[i], 验证集的AUC值为, auc_score_val[i]) b调教GPT-4的过程 b1咒语请根据{代码1}改写和续写《代码2》。代码1{也就是之前用tensorflow写的误判病例分析部分}代码2《也就是修改之前的Mobilenet模型建模代码》 然后根据具体情况调整即可当然是在GPT的帮助下。 三、输出结果 1学习曲线 2混淆矩阵 3性能参数 4ROC曲线 4.1和在一起的 4.2分开的 四、数据 链接https://pan.baidu.com/s/1rqu15KAUxjNBaWYfEmPwgQ?pwdxfyn 提取码xfyn
http://www.dnsts.com.cn/news/197653.html

相关文章:

  • 山西笑傲网站建设seo工具包括
  • 个人网站代做wordpress+菜单大小
  • 那些企业需要做网站杭州关键词排名工具
  • 霍邱县住房和城乡建设局网站wordpress 图标
  • 网站推广软文背景做网站公司
  • 外贸网站建设 soho暴雪加速器
  • wordpress php5.6版本东莞seo关键字优化
  • 广东学校网站建设公司可视化建站工具
  • 网站优化标准域名历史解析查询
  • 维度网络做网站凡科网站建设步骤
  • 跨境电商网站设计装饰logo设计图片
  • 网站模板代理电话哪个网站做视频钱多
  • 江门学做网站课程临沂做网站哪家好
  • 网站建设推广的广告语wordpress网站模板下载失败
  • html5移动端网站开发wordpress侧栏菜单加上序号
  • 网站申请页面深圳做网站收费
  • 电子商务网站开发语言做网站后台的时候要注意什么
  • 国外做美食视频网站有哪些公司有域名的怎么建设网站
  • 网站转app工具wordpress移动下方的菜单
  • 上海青浦做网站公司wordpress 素材
  • 使用joomla的网站汉中软件开发项目管理
  • 新乡网站建设方案中国十大工业设计公司
  • 微信上如何做网站手机软件开发公司
  • 肇庆市住房和城乡建设局网站展示型网站开发
  • 新浪网站用什么语言做的泰安房产网数据中心
  • 景宁县建设局网站官方网站弹幕怎么做
  • 网站开发需求文档prd模板wordpress 分类文章列表
  • 网站建立的步骤是wordpress 回复 慢
  • 商丘网站制作的流程wordpress 密码提示
  • 网站建设整体流程成都网站建设龙兵