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

Resnet50网络——口腔癌病变识别

一 数据准备

1.导入数据

import matplotlib.pyplot as plt
import tensorflow as tf
import warnings as w
w.filterwarnings('ignore')
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号import os,PIL,pathlib#隐藏警告
import warnings
warnings.filterwarnings('ignore')data_dir = "./data"
data_dir = pathlib.Path(data_dir)image_count = len(list(data_dir.glob('*/*')))print("图片总数为:",image_count)
图片总数为: 5192

2.数据预处理 

batch_size = 64
img_height = 224
img_width = 224
train_ds = tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split=0.3,subset="training",seed=12,image_size=(img_height, img_width),batch_size=batch_size)
Found 5192 files belonging to 2 classes.
Using 3635 files for training.
val_ds = tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split=0.3,subset="validation",seed=12,image_size=(img_height, img_width),batch_size=batch_size)
Found 5192 files belonging to 2 classes.
Using 1557 files for validation.
class_names = train_ds.class_names
print(class_names)
['Normal', 'OSCC']
for image_batch, labels_batch in train_ds:print(image_batch.shape)print(labels_batch.shape)break
(64, 224, 224, 3)
(64,)
AUTOTUNE = tf.data.AUTOTUNEdef preprocess_image(image,label):return (image/255.0,label)# 归一化处理
train_ds = train_ds.map(preprocess_image, num_parallel_calls=AUTOTUNE)
val_ds   = val_ds.map(preprocess_image, num_parallel_calls=AUTOTUNE)train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
val_ds   = val_ds.cache().prefetch(buffer_size=AUTOTUNE)

3.可视化数据

plt.figure(figsize=(15, 10))  # 图形的宽为15高为10for images, labels in train_ds.take(1):for i in range(15):ax = plt.subplot(3, 5, i + 1) plt.imshow(images[i])plt.title(class_names[labels[i]])plt.axis("off")

二 ResNet50模型的构建 

 

from keras import layers
from keras.layers import Input,Activation,BatchNormalization,Flatten, Dropout
from keras.layers import Dense,Conv2D,MaxPooling2D,ZeroPadding2D,AveragePooling2D
from keras.models import Model
import tensorflow as tfdef identity_block(input_tensor,kernel_size,filters,stage,block):''':param input_tensor: 输入张量,通常是前一层的输出:param kernel_size: 卷积核大小,用于第二个卷积层:param filters: 一个包含三个整数的元组,分别表示三个卷积层的过滤器数量:param stage: 当前块的阶段,用于命名:param block: 当前块的名称,用于命名:return:'''# 提取过滤器数量filters1,filters2,filters3 = filters# 基础名称生成name_base = str(stage) + block +'_identity_block_'# 第一个卷积层,使用1x1卷积对输入进行处理,减少通道数。卷积层之后跟着批归一化和ReLU激活x = Conv2D(filters1,(1,1),name=name_base+'conv1')(input_tensor)x = BatchNormalization(name=name_base + 'bn1')(x)x = Activation('relu',name=name_base+'relu1')(x)# 第二个卷积层,使用给定的kernel_size进行卷积,保持输入和输出的空间尺寸相同(通过padding='same')。同样后续跟着批归一化和ReLU激活x = Conv2D(filters2,kernel_size,padding='same',name=name_base+'conv2')(x)x = BatchNormalization(name=name_base + 'bn2')(x)x = Activation('relu',name=name_base+'relu2')(x)# 第三个卷积层,再次使用1x1卷积来调整输出通道数,随后进行批归一化x = Conv2D(filters3, (1, 1), name=name_base + 'conv3')(x)x = BatchNormalization(name=name_base + 'bn3')(x)# 残差连接,将输入张量和经过卷积层处理后的输出张量相加。这种残差连接有助于缓解梯度消失问题,促进信息流动x = layers.add([x,input_tensor],name=name_base+'add')# 加和后的结果上应用ReLU激活函数x = Activation('relu',name=name_base+'relu4')(x)return x'''
在残差网络中,广泛的使用了BN层;但是没有使用MaxPooling以便减小特征图尺寸
作为替代,在每个模块的第一层,都使用了strides = (2,2)的方式进行特征图尺寸缩减
与使用MaxPooling相比,毫无疑问是减少了卷积的次数,输入图像分辨率较大时比较适合
在残差网络的最后一级,先利用layer.add()实现H(x) = x + F(x)
'''
def conv_block(input_tensor,kernel_size,filters,stage,block,strides=(2,2)):'''input_tensor: 输入张量,通常是前一层的输出。kernel_size: 卷积核的大小,用于第二个卷积层。filters: 一个包含三个整数的元组,分别表示三个卷积层的过滤器数量。stage: 当前块的阶段,通常用于命名。block: 当前块的名称,用于命名。strides: 卷积的步幅,默认值为(2, 2),用于下采样。'''# 提取过滤器数量filters1, filters2, filters3 = filters# 基础名称生成res_name_base = str(stage) + block +'_conv_block_res_'name_base = str(stage) + block +'_conv_block_'# 使用1x1卷积对输入进行处理,减少通道数。strides参数用于控制下采样,默认步幅为(2, 2),这将使输出特征图的尺寸减半。后续跟着批归一化和ReLU激活x = Conv2D(filters1, (1, 1), strides=strides,name=name_base + 'conv1')(input_tensor)x = BatchNormalization(name=name_base + 'bn1')(x)x = Activation('relu', name=name_base + 'relu1')(x)# 使用给定的kernel_size进行卷积,保持输入和输出的空间尺寸相同(通过padding='same')。后续同样进行批归一化和ReLU激活x = Conv2D(filters2, kernel_size, padding='same', name=name_base + 'conv2')(x)x = BatchNormalization(name=name_base + 'bn2')(x)x = Activation('relu', name=name_base + 'relu2')(x)# 使用1x1卷积来调整输出通道数,随后进行批归一化x = Conv2D(filters3, (1, 1), name=name_base + 'conv3')(x)x = BatchNormalization(name=name_base + 'bn3')(x)# 对输入张量进行卷积处理,以匹配输出张量的维度,确保在加法操作时两者具有相同的形状。此卷积层的步幅与主卷积块相同,确保特征图的尺寸一致。随后进行批归一化shortcut = Conv2D(filters3,(1,1),strides=strides,name=res_name_base+'conv')(input_tensor)shortcut = BatchNormalization(name=res_name_base+'bn')(shortcut)x = layers.add([x,shortcut],name=name_base+'add')x = Activation('relu',name=name_base+'relu4')(x)return x'''
定义一个ResNet50模型:输入层:接收形状为 224x224x3 的图像。零填充:对输入进行 3 像素的零填充,以保持特征图的边界。初始卷积:使用 64 个 7x7 的卷积核,步幅为 2,之后进行批归一化和 ReLU 激活。最大池化:进行 3x3 的最大池化,步幅为 2,减少特征图尺寸。残差块:通过堆叠卷积块(conv_block)和身份块(identity_block)实现特征提取,逐步增加通道数,从 64 到 2048。平均池化:在最后应用 7x7 的平均池化,降低特征维度。展平和全连接层:展平特征图,接入一个具有 softmax 激活的全连接层,用于多类分类(2 类)。加载预训练权重:从指定文件加载预训练的模型权重,便于迁移学习。
该架构旨在有效捕捉图像特征,适合深度学习任务
'''
def ResNet50(input_shape=[224,224,3],classes=2):img_input = Input(shape=input_shape)x = ZeroPadding2D((3,3))(img_input)x = Conv2D(64,(7,7),strides=(2,2),name='conv1')(x)x = BatchNormalization(name='bn_conv1')(x)x = Activation('relu')(x)x = MaxPooling2D((3,3),strides=(2,2))(x)x = conv_block(x,3,[64,64,256],stage=2,block='a',strides=(1,1))x = identity_block(x,3,[64,64,256],stage=2,block='b')x = identity_block(x,3,[64,64,256],stage=2,block='c')x = conv_block(x,3,[128,128,512],stage=3,block='a')x = identity_block(x,3,[128,128,512],stage=3,block='b')x = identity_block(x,3,[128,128,512],stage=3,block='c')x = identity_block(x,3,[128,128,512],stage=3,block='d')x = conv_block(x, 3, [256,256,1024], stage=4, block='a')x = identity_block(x, 3, [256,256,1024], stage=4, block='b')x = identity_block(x, 3, [256,256,1024], stage=4, block='c')x = identity_block(x, 3, [256,256,1024], stage=4, block='d')x = identity_block(x, 3, [256,256,1024], stage=4, block='e')x = identity_block(x, 3, [256,256,1024], stage=4, block='f')x = conv_block(x,3,[512,512,2048],stage=5,block='a')x = identity_block(x,3,[512,512,2048],stage=5,block='b')x = identity_block(x,3,[512,512,2048],stage=5,block='c')x = AveragePooling2D((7,7),name='avg_pool')(x)x = Flatten()(x)# 在全连接层之前添加 Dropout 层x = Dropout(0.5)(x)  # 这里设置 Dropout 比率为 50%x = Dense(classes,activation='softmax',name='fc2')(x)model = Model(img_input,x,name='resnet50')# 加载预训练模型# model.load_weights("resnet50_weights_tf_dim_ordering_tf_kernels.h5")return modelmodel = ResNet50()
model.summary()
Model: "resnet50"
__________________________________________________________________________________________________Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================input_2 (InputLayer)           [(None, 224, 224, 3  0           []                               )]                                                                zero_padding2d_1 (ZeroPadding2  (None, 230, 230, 3)  0          ['input_2[0][0]']                D)                                                                                               conv1 (Conv2D)                 (None, 112, 112, 64  9472        ['zero_padding2d_1[0][0]']       )                                                                 bn_conv1 (BatchNormalization)  (None, 112, 112, 64  256         ['conv1[0][0]']                  )                                                                 activation_1 (Activation)      (None, 112, 112, 64  0           ['bn_conv1[0][0]']               )                                                                 max_pooling2d_1 (MaxPooling2D)  (None, 55, 55, 64)  0           ['activation_1[0][0]']           2a_conv_block_conv1 (Conv2D)   (None, 55, 55, 64)   4160        ['max_pooling2d_1[0][0]']        2a_conv_block_bn1 (BatchNormal  (None, 55, 55, 64)  256         ['2a_conv_block_conv1[0][0]']    ization)                                                                                         2a_conv_block_relu1 (Activatio  (None, 55, 55, 64)  0           ['2a_conv_block_bn1[0][0]']      n)                                                                                               2a_conv_block_conv2 (Conv2D)   (None, 55, 55, 64)   36928       ['2a_conv_block_relu1[0][0]']    2a_conv_block_bn2 (BatchNormal  (None, 55, 55, 64)  256         ['2a_conv_block_conv2[0][0]']    ization)                                                                                         2a_conv_block_relu2 (Activatio  (None, 55, 55, 64)  0           ['2a_conv_block_bn2[0][0]']      n)                                                                                               2a_conv_block_conv3 (Conv2D)   (None, 55, 55, 256)  16640       ['2a_conv_block_relu2[0][0]']    2a_conv_block_res_conv (Conv2D  (None, 55, 55, 256)  16640      ['max_pooling2d_1[0][0]']        )                                                                                                2a_conv_block_bn3 (BatchNormal  (None, 55, 55, 256)  1024       ['2a_conv_block_conv3[0][0]']    ization)                                                                                         2a_conv_block_res_bn (BatchNor  (None, 55, 55, 256)  1024       ['2a_conv_block_res_conv[0][0]'] malization)                                                                                      2a_conv_block_add (Add)        (None, 55, 55, 256)  0           ['2a_conv_block_bn3[0][0]',      '2a_conv_block_res_bn[0][0]']   2a_conv_block_relu4 (Activatio  (None, 55, 55, 256)  0          ['2a_conv_block_add[0][0]']      n)                                                                                               2b_identity_block_conv1 (Conv2  (None, 55, 55, 64)  16448       ['2a_conv_block_relu4[0][0]']    D)                                                                                               2b_identity_block_bn1 (BatchNo  (None, 55, 55, 64)  256         ['2b_identity_block_conv1[0][0]']rmalization)                                                                                     2b_identity_block_relu1 (Activ  (None, 55, 55, 64)  0           ['2b_identity_block_bn1[0][0]']  ation)                                                                                           2b_identity_block_conv2 (Conv2  (None, 55, 55, 64)  36928       ['2b_identity_block_relu1[0][0]']D)                                                                                               2b_identity_block_bn2 (BatchNo  (None, 55, 55, 64)  256         ['2b_identity_block_conv2[0][0]']rmalization)                                                                                     2b_identity_block_relu2 (Activ  (None, 55, 55, 64)  0           ['2b_identity_block_bn2[0][0]']  ation)                                                                                           2b_identity_block_conv3 (Conv2  (None, 55, 55, 256)  16640      ['2b_identity_block_relu2[0][0]']D)                                                                                               2b_identity_block_bn3 (BatchNo  (None, 55, 55, 256)  1024       ['2b_identity_block_conv3[0][0]']rmalization)                                                                                     2b_identity_block_add (Add)    (None, 55, 55, 256)  0           ['2b_identity_block_bn3[0][0]',  '2a_conv_block_relu4[0][0]']    2b_identity_block_relu4 (Activ  (None, 55, 55, 256)  0          ['2b_identity_block_add[0][0]']  ation)                                                                                           2c_identity_block_conv1 (Conv2  (None, 55, 55, 64)  16448       ['2b_identity_block_relu4[0][0]']D)                                                                                               2c_identity_block_bn1 (BatchNo  (None, 55, 55, 64)  256         ['2c_identity_block_conv1[0][0]']rmalization)                                                                                     2c_identity_block_relu1 (Activ  (None, 55, 55, 64)  0           ['2c_identity_block_bn1[0][0]']  ation)                                                                                           2c_identity_block_conv2 (Conv2  (None, 55, 55, 64)  36928       ['2c_identity_block_relu1[0][0]']D)                                                                                               2c_identity_block_bn2 (BatchNo  (None, 55, 55, 64)  256         ['2c_identity_block_conv2[0][0]']rmalization)                                                                                     2c_identity_block_relu2 (Activ  (None, 55, 55, 64)  0           ['2c_identity_block_bn2[0][0]']  ation)                                                                                           2c_identity_block_conv3 (Conv2  (None, 55, 55, 256)  16640      ['2c_identity_block_relu2[0][0]']D)                                                                                               2c_identity_block_bn3 (BatchNo  (None, 55, 55, 256)  1024       ['2c_identity_block_conv3[0][0]']rmalization)                                                                                     2c_identity_block_add (Add)    (None, 55, 55, 256)  0           ['2c_identity_block_bn3[0][0]',  '2b_identity_block_relu4[0][0]']2c_identity_block_relu4 (Activ  (None, 55, 55, 256)  0          ['2c_identity_block_add[0][0]']  ation)                                                                                           3a_conv_block_conv1 (Conv2D)   (None, 28, 28, 128)  32896       ['2c_identity_block_relu4[0][0]']3a_conv_block_bn1 (BatchNormal  (None, 28, 28, 128)  512        ['3a_conv_block_conv1[0][0]']    ization)                                                                                         3a_conv_block_relu1 (Activatio  (None, 28, 28, 128)  0          ['3a_conv_block_bn1[0][0]']      n)                                                                                               3a_conv_block_conv2 (Conv2D)   (None, 28, 28, 128)  147584      ['3a_conv_block_relu1[0][0]']    3a_conv_block_bn2 (BatchNormal  (None, 28, 28, 128)  512        ['3a_conv_block_conv2[0][0]']    ization)                                                                                         3a_conv_block_relu2 (Activatio  (None, 28, 28, 128)  0          ['3a_conv_block_bn2[0][0]']      n)                                                                                               3a_conv_block_conv3 (Conv2D)   (None, 28, 28, 512)  66048       ['3a_conv_block_relu2[0][0]']    3a_conv_block_res_conv (Conv2D  (None, 28, 28, 512)  131584     ['2c_identity_block_relu4[0][0]'])                                                                                                3a_conv_block_bn3 (BatchNormal  (None, 28, 28, 512)  2048       ['3a_conv_block_conv3[0][0]']    ization)                                                                                         3a_conv_block_res_bn (BatchNor  (None, 28, 28, 512)  2048       ['3a_conv_block_res_conv[0][0]'] malization)                                                                                      3a_conv_block_add (Add)        (None, 28, 28, 512)  0           ['3a_conv_block_bn3[0][0]',      '3a_conv_block_res_bn[0][0]']   3a_conv_block_relu4 (Activatio  (None, 28, 28, 512)  0          ['3a_conv_block_add[0][0]']      n)                                                                                               3b_identity_block_conv1 (Conv2  (None, 28, 28, 128)  65664      ['3a_conv_block_relu4[0][0]']    D)                                                                                               3b_identity_block_bn1 (BatchNo  (None, 28, 28, 128)  512        ['3b_identity_block_conv1[0][0]']rmalization)                                                                                     3b_identity_block_relu1 (Activ  (None, 28, 28, 128)  0          ['3b_identity_block_bn1[0][0]']  ation)                                                                                           3b_identity_block_conv2 (Conv2  (None, 28, 28, 128)  147584     ['3b_identity_block_relu1[0][0]']D)                                                                                               3b_identity_block_bn2 (BatchNo  (None, 28, 28, 128)  512        ['3b_identity_block_conv2[0][0]']rmalization)                                                                                     3b_identity_block_relu2 (Activ  (None, 28, 28, 128)  0          ['3b_identity_block_bn2[0][0]']  ation)                                                                                           3b_identity_block_conv3 (Conv2  (None, 28, 28, 512)  66048      ['3b_identity_block_relu2[0][0]']D)                                                                                               3b_identity_block_bn3 (BatchNo  (None, 28, 28, 512)  2048       ['3b_identity_block_conv3[0][0]']rmalization)                                                                                     3b_identity_block_add (Add)    (None, 28, 28, 512)  0           ['3b_identity_block_bn3[0][0]',  '3a_conv_block_relu4[0][0]']    3b_identity_block_relu4 (Activ  (None, 28, 28, 512)  0          ['3b_identity_block_add[0][0]']  ation)                                                                                           3c_identity_block_conv1 (Conv2  (None, 28, 28, 128)  65664      ['3b_identity_block_relu4[0][0]']D)                                                                                               3c_identity_block_bn1 (BatchNo  (None, 28, 28, 128)  512        ['3c_identity_block_conv1[0][0]']rmalization)                                                                                     3c_identity_block_relu1 (Activ  (None, 28, 28, 128)  0          ['3c_identity_block_bn1[0][0]']  ation)                                                                                           3c_identity_block_conv2 (Conv2  (None, 28, 28, 128)  147584     ['3c_identity_block_relu1[0][0]']D)                                                                                               3c_identity_block_bn2 (BatchNo  (None, 28, 28, 128)  512        ['3c_identity_block_conv2[0][0]']rmalization)                                                                                     3c_identity_block_relu2 (Activ  (None, 28, 28, 128)  0          ['3c_identity_block_bn2[0][0]']  ation)                                                                                           3c_identity_block_conv3 (Conv2  (None, 28, 28, 512)  66048      ['3c_identity_block_relu2[0][0]']D)                                                                                               3c_identity_block_bn3 (BatchNo  (None, 28, 28, 512)  2048       ['3c_identity_block_conv3[0][0]']rmalization)                                                                                     3c_identity_block_add (Add)    (None, 28, 28, 512)  0           ['3c_identity_block_bn3[0][0]',  '3b_identity_block_relu4[0][0]']3c_identity_block_relu4 (Activ  (None, 28, 28, 512)  0          ['3c_identity_block_add[0][0]']  ation)                                                                                           3d_identity_block_conv1 (Conv2  (None, 28, 28, 128)  65664      ['3c_identity_block_relu4[0][0]']D)                                                                                               3d_identity_block_bn1 (BatchNo  (None, 28, 28, 128)  512        ['3d_identity_block_conv1[0][0]']rmalization)                                                                                     3d_identity_block_relu1 (Activ  (None, 28, 28, 128)  0          ['3d_identity_block_bn1[0][0]']  ation)                                                                                           3d_identity_block_conv2 (Conv2  (None, 28, 28, 128)  147584     ['3d_identity_block_relu1[0][0]']D)                                                                                               3d_identity_block_bn2 (BatchNo  (None, 28, 28, 128)  512        ['3d_identity_block_conv2[0][0]']rmalization)                                                                                     3d_identity_block_relu2 (Activ  (None, 28, 28, 128)  0          ['3d_identity_block_bn2[0][0]']  ation)                                                                                           3d_identity_block_conv3 (Conv2  (None, 28, 28, 512)  66048      ['3d_identity_block_relu2[0][0]']D)                                                                                               3d_identity_block_bn3 (BatchNo  (None, 28, 28, 512)  2048       ['3d_identity_block_conv3[0][0]']rmalization)                                                                                     3d_identity_block_add (Add)    (None, 28, 28, 512)  0           ['3d_identity_block_bn3[0][0]',  '3c_identity_block_relu4[0][0]']3d_identity_block_relu4 (Activ  (None, 28, 28, 512)  0          ['3d_identity_block_add[0][0]']  ation)                                                                                           4a_conv_block_conv1 (Conv2D)   (None, 14, 14, 256)  131328      ['3d_identity_block_relu4[0][0]']4a_conv_block_bn1 (BatchNormal  (None, 14, 14, 256)  1024       ['4a_conv_block_conv1[0][0]']    ization)                                                                                         4a_conv_block_relu1 (Activatio  (None, 14, 14, 256)  0          ['4a_conv_block_bn1[0][0]']      n)                                                                                               4a_conv_block_conv2 (Conv2D)   (None, 14, 14, 256)  590080      ['4a_conv_block_relu1[0][0]']    4a_conv_block_bn2 (BatchNormal  (None, 14, 14, 256)  1024       ['4a_conv_block_conv2[0][0]']    ization)                                                                                         4a_conv_block_relu2 (Activatio  (None, 14, 14, 256)  0          ['4a_conv_block_bn2[0][0]']      n)                                                                                               4a_conv_block_conv3 (Conv2D)   (None, 14, 14, 1024  263168      ['4a_conv_block_relu2[0][0]']    )                                                                 4a_conv_block_res_conv (Conv2D  (None, 14, 14, 1024  525312     ['3d_identity_block_relu4[0][0]'])                              )                                                                 4a_conv_block_bn3 (BatchNormal  (None, 14, 14, 1024  4096       ['4a_conv_block_conv3[0][0]']    ization)                       )                                                                 4a_conv_block_res_bn (BatchNor  (None, 14, 14, 1024  4096       ['4a_conv_block_res_conv[0][0]'] malization)                    )                                                                 4a_conv_block_add (Add)        (None, 14, 14, 1024  0           ['4a_conv_block_bn3[0][0]',      )                                 '4a_conv_block_res_bn[0][0]']   4a_conv_block_relu4 (Activatio  (None, 14, 14, 1024  0          ['4a_conv_block_add[0][0]']      n)                             )                                                                 4b_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4a_conv_block_relu4[0][0]']    D)                                                                                               4b_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4b_identity_block_conv1[0][0]']rmalization)                                                                                     4b_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4b_identity_block_bn1[0][0]']  ation)                                                                                           4b_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4b_identity_block_relu1[0][0]']D)                                                                                               4b_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4b_identity_block_conv2[0][0]']rmalization)                                                                                     4b_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4b_identity_block_bn2[0][0]']  ation)                                                                                           4b_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4b_identity_block_relu2[0][0]']D)                             )                                                                 4b_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4b_identity_block_conv3[0][0]']rmalization)                   )                                                                 4b_identity_block_add (Add)    (None, 14, 14, 1024  0           ['4b_identity_block_bn3[0][0]',  )                                 '4a_conv_block_relu4[0][0]']    4b_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4b_identity_block_add[0][0]']  ation)                         )                                                                 4c_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4b_identity_block_relu4[0][0]']D)                                                                                               4c_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4c_identity_block_conv1[0][0]']rmalization)                                                                                     4c_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4c_identity_block_bn1[0][0]']  ation)                                                                                           4c_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4c_identity_block_relu1[0][0]']D)                                                                                               4c_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4c_identity_block_conv2[0][0]']rmalization)                                                                                     4c_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4c_identity_block_bn2[0][0]']  ation)                                                                                           4c_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4c_identity_block_relu2[0][0]']D)                             )                                                                 4c_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4c_identity_block_conv3[0][0]']rmalization)                   )                                                                 4c_identity_block_add (Add)    (None, 14, 14, 1024  0           ['4c_identity_block_bn3[0][0]',  )                                 '4b_identity_block_relu4[0][0]']4c_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4c_identity_block_add[0][0]']  ation)                         )                                                                 4d_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4c_identity_block_relu4[0][0]']D)                                                                                               4d_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4d_identity_block_conv1[0][0]']rmalization)                                                                                     4d_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4d_identity_block_bn1[0][0]']  ation)                                                                                           4d_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4d_identity_block_relu1[0][0]']D)                                                                                               4d_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4d_identity_block_conv2[0][0]']rmalization)                                                                                     4d_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4d_identity_block_bn2[0][0]']  ation)                                                                                           4d_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4d_identity_block_relu2[0][0]']D)                             )                                                                 4d_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4d_identity_block_conv3[0][0]']rmalization)                   )                                                                 4d_identity_block_add (Add)    (None, 14, 14, 1024  0           ['4d_identity_block_bn3[0][0]',  )                                 '4c_identity_block_relu4[0][0]']4d_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4d_identity_block_add[0][0]']  ation)                         )                                                                 4e_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4d_identity_block_relu4[0][0]']D)                                                                                               4e_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4e_identity_block_conv1[0][0]']rmalization)                                                                                     4e_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4e_identity_block_bn1[0][0]']  ation)                                                                                           4e_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4e_identity_block_relu1[0][0]']D)                                                                                               4e_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4e_identity_block_conv2[0][0]']rmalization)                                                                                     4e_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4e_identity_block_bn2[0][0]']  ation)                                                                                           4e_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4e_identity_block_relu2[0][0]']D)                             )                                                                 4e_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4e_identity_block_conv3[0][0]']rmalization)                   )                                                                 4e_identity_block_add (Add)    (None, 14, 14, 1024  0           ['4e_identity_block_bn3[0][0]',  )                                 '4d_identity_block_relu4[0][0]']4e_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4e_identity_block_add[0][0]']  ation)                         )                                                                 4f_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4e_identity_block_relu4[0][0]']D)                                                                                               4f_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4f_identity_block_conv1[0][0]']rmalization)                                                                                     4f_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4f_identity_block_bn1[0][0]']  ation)                                                                                           4f_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4f_identity_block_relu1[0][0]']D)                                                                                               4f_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4f_identity_block_conv2[0][0]']rmalization)                                                                                     4f_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4f_identity_block_bn2[0][0]']  ation)                                                                                           4f_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4f_identity_block_relu2[0][0]']D)                             )                                                                 4f_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4f_identity_block_conv3[0][0]']rmalization)                   )                                                                 4f_identity_block_add (Add)    (None, 14, 14, 1024  0           ['4f_identity_block_bn3[0][0]',  )                                 '4e_identity_block_relu4[0][0]']4f_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4f_identity_block_add[0][0]']  ation)                         )                                                                 5a_conv_block_conv1 (Conv2D)   (None, 7, 7, 512)    524800      ['4f_identity_block_relu4[0][0]']5a_conv_block_bn1 (BatchNormal  (None, 7, 7, 512)   2048        ['5a_conv_block_conv1[0][0]']    ization)                                                                                         5a_conv_block_relu1 (Activatio  (None, 7, 7, 512)   0           ['5a_conv_block_bn1[0][0]']      n)                                                                                               5a_conv_block_conv2 (Conv2D)   (None, 7, 7, 512)    2359808     ['5a_conv_block_relu1[0][0]']    5a_conv_block_bn2 (BatchNormal  (None, 7, 7, 512)   2048        ['5a_conv_block_conv2[0][0]']    ization)                                                                                         5a_conv_block_relu2 (Activatio  (None, 7, 7, 512)   0           ['5a_conv_block_bn2[0][0]']      n)                                                                                               5a_conv_block_conv3 (Conv2D)   (None, 7, 7, 2048)   1050624     ['5a_conv_block_relu2[0][0]']    5a_conv_block_res_conv (Conv2D  (None, 7, 7, 2048)  2099200     ['4f_identity_block_relu4[0][0]'])                                                                                                5a_conv_block_bn3 (BatchNormal  (None, 7, 7, 2048)  8192        ['5a_conv_block_conv3[0][0]']    ization)                                                                                         5a_conv_block_res_bn (BatchNor  (None, 7, 7, 2048)  8192        ['5a_conv_block_res_conv[0][0]'] malization)                                                                                      5a_conv_block_add (Add)        (None, 7, 7, 2048)   0           ['5a_conv_block_bn3[0][0]',      '5a_conv_block_res_bn[0][0]']   5a_conv_block_relu4 (Activatio  (None, 7, 7, 2048)  0           ['5a_conv_block_add[0][0]']      n)                                                                                               5b_identity_block_conv1 (Conv2  (None, 7, 7, 512)   1049088     ['5a_conv_block_relu4[0][0]']    D)                                                                                               5b_identity_block_bn1 (BatchNo  (None, 7, 7, 512)   2048        ['5b_identity_block_conv1[0][0]']rmalization)                                                                                     5b_identity_block_relu1 (Activ  (None, 7, 7, 512)   0           ['5b_identity_block_bn1[0][0]']  ation)                                                                                           5b_identity_block_conv2 (Conv2  (None, 7, 7, 512)   2359808     ['5b_identity_block_relu1[0][0]']D)                                                                                               5b_identity_block_bn2 (BatchNo  (None, 7, 7, 512)   2048        ['5b_identity_block_conv2[0][0]']rmalization)                                                                                     5b_identity_block_relu2 (Activ  (None, 7, 7, 512)   0           ['5b_identity_block_bn2[0][0]']  ation)                                                                                           5b_identity_block_conv3 (Conv2  (None, 7, 7, 2048)  1050624     ['5b_identity_block_relu2[0][0]']D)                                                                                               5b_identity_block_bn3 (BatchNo  (None, 7, 7, 2048)  8192        ['5b_identity_block_conv3[0][0]']rmalization)                                                                                     5b_identity_block_add (Add)    (None, 7, 7, 2048)   0           ['5b_identity_block_bn3[0][0]',  '5a_conv_block_relu4[0][0]']    5b_identity_block_relu4 (Activ  (None, 7, 7, 2048)  0           ['5b_identity_block_add[0][0]']  ation)                                                                                           5c_identity_block_conv1 (Conv2  (None, 7, 7, 512)   1049088     ['5b_identity_block_relu4[0][0]']D)                                                                                               5c_identity_block_bn1 (BatchNo  (None, 7, 7, 512)   2048        ['5c_identity_block_conv1[0][0]']rmalization)                                                                                     5c_identity_block_relu1 (Activ  (None, 7, 7, 512)   0           ['5c_identity_block_bn1[0][0]']  ation)                                                                                           5c_identity_block_conv2 (Conv2  (None, 7, 7, 512)   2359808     ['5c_identity_block_relu1[0][0]']D)                                                                                               5c_identity_block_bn2 (BatchNo  (None, 7, 7, 512)   2048        ['5c_identity_block_conv2[0][0]']rmalization)                                                                                     5c_identity_block_relu2 (Activ  (None, 7, 7, 512)   0           ['5c_identity_block_bn2[0][0]']  ation)                                                                                           5c_identity_block_conv3 (Conv2  (None, 7, 7, 2048)  1050624     ['5c_identity_block_relu2[0][0]']D)                                                                                               5c_identity_block_bn3 (BatchNo  (None, 7, 7, 2048)  8192        ['5c_identity_block_conv3[0][0]']rmalization)                                                                                     5c_identity_block_add (Add)    (None, 7, 7, 2048)   0           ['5c_identity_block_bn3[0][0]',  '5b_identity_block_relu4[0][0]']5c_identity_block_relu4 (Activ  (None, 7, 7, 2048)  0           ['5c_identity_block_add[0][0]']  ation)                                                                                           avg_pool (AveragePooling2D)    (None, 1, 1, 2048)   0           ['5c_identity_block_relu4[0][0]']flatten_1 (Flatten)            (None, 2048)         0           ['avg_pool[0][0]']               dropout (Dropout)              (None, 2048)         0           ['flatten_1[0][0]']              fc2 (Dense)                    (None, 2)            4098        ['dropout[0][0]']                ==================================================================================================
Total params: 23,591,810
Trainable params: 23,538,690
Non-trainable params: 53,120
__________________________________________________________________________________________________

三 编译 

# 设置优化器
opt = tf.keras.optimizers.Adam(learning_rate=1e-7)model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

四 训练模型 

from keras.callbacks import EarlyStopping
# 设置早停法
early_stopping = EarlyStopping(monitor='val_loss',patience=3,verbose=1,restore_best_weights=True
)
epochs = 10history = model.fit(train_ds,validation_data=val_ds,epochs=epochs,callbacks=[early_stopping]
)
Epoch 1/10
57/57 [==============================] - 709s 12s/step - loss: 0.9055 - accuracy: 0.6853 - val_loss: 1.0100 - val_accuracy: 0.4913
Epoch 2/10
57/57 [==============================] - 681s 12s/step - loss: 0.5338 - accuracy: 0.7667 - val_loss: 0.7880 - val_accuracy: 0.4978
Epoch 3/10
57/57 [==============================] - 662s 12s/step - loss: 0.4756 - accuracy: 0.7829 - val_loss: 0.7841 - val_accuracy: 0.4290
Epoch 4/10
57/57 [==============================] - 660s 12s/step - loss: 0.4223 - accuracy: 0.8102 - val_loss: 0.7710 - val_accuracy: 0.5466
Epoch 5/10
57/57 [==============================] - 662s 12s/step - loss: 0.3743 - accuracy: 0.8347 - val_loss: 0.8795 - val_accuracy: 0.5748
Epoch 6/10
57/57 [==============================] - 665s 12s/step - loss: 0.3481 - accuracy: 0.8468 - val_loss: 1.2726 - val_accuracy: 0.4579
Epoch 7/10
57/57 [==============================] - ETA: 0s - loss: 0.3365 - accuracy: 0.8556 Restoring model weights from the end of the best epoch: 4.
57/57 [==============================] - 661s 12s/step - loss: 0.3365 - accuracy: 0.8556 - val_loss: 0.9570 - val_accuracy: 0.5812
Epoch 7: early stopping

五 模型评估 

# 获取实际训练轮数
actual_epochs = len(history.history['accuracy'])acc = history.history['accuracy']
val_acc = history.history['val_accuracy']loss = history.history['loss']
val_loss = history.history['val_loss']epochs_range = range(actual_epochs)plt.figure(figsize=(12, 4))# 绘制准确率
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')# 绘制损失
plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')plt.show()

六 预测 

import numpy as np# 采用加载的模型(new_model)来看预测结果
plt.figure(figsize=(18, 3))  # 图形的宽为18高为5
plt.suptitle("预测结果展示")for images, labels in val_ds.take(1):for i in range(8):ax = plt.subplot(1,8, i + 1)  # 显示图片plt.imshow(images[i].numpy())# 需要给图片增加一个维度img_array = tf.expand_dims(images[i], 0) # 使用模型预测图片中的人物predictions = model.predict(img_array)plt.title(class_names[np.argmax(predictions)])plt.axis("off")
1/1 [==============================] - 1s 699ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 63ms/step

 

相关文章:

Resnet50网络——口腔癌病变识别

一 数据准备 1.导入数据 import matplotlib.pyplot as plt import tensorflow as tf import warnings as w w.filterwarnings(ignore) # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负…...

Python 中自动打开网页并点击[自动化脚本],Selenium

要在 Python 中自动打开网页并点击第一个 <a> 标签&#xff0c;你需要使用 Selenium&#xff0c;它可以控制浏览器并执行像点击这样的操作。requests 和 BeautifulSoup 只能获取并解析网页内容&#xff0c;但不能进行网页交互操作。 步骤&#xff1a; 安装 Selenium安装…...

Spring Boot-自动配置问题

**### Spring Boot自动配置问题探讨 Spring Boot 是当前 Java 后端开发中非常流行的框架&#xff0c;其核心特性之一便是“自动配置”&#xff08;Auto-Configuration&#xff09;。自动配置大大简化了应用开发过程&#xff0c;开发者不需要编写大量的 XML 配置或是繁琐的 Jav…...

CS61B学习 part1

本人选择了2018spring的课程&#xff0c;因为他免费提供了评分机器&#xff0c;后来得知2021也开放了&#xff0c;决定把其中的Lab尝试一番&#xff0c;听说gitlab就近好评&#xff0c;相当有实力&#xff0c;并借此学习Java的基本知识&#xff0c;请根据pku的cswiki做好评分机…...

我Github的问题解决了!

看的这篇&#xff0c;解决使用git时遇到Failed to connect to github.com port 443 after 21090 ms: Couldn‘t connect to server_git couldnt connect to server-CSDN博客 之前想推送的能推送了&#xff0c;拉取的也能取了。 一、如果是在挂着梯子的情况下拉取或者推送代码…...

Pytorch构建神经网络多元线性回归模型

1.模型线性方程y W ∗ X b from torch import nn import torch#手动设置的W参数&#xff08;待模型学习&#xff09;&#xff0c;这里设置为12个&#xff0c;自己随意设置weight_settorch.tensor([[1.5,2.38,4.22,6.5,7.2,3.21,4.44,6.55,2.48,-1.75,-3.26,4.78]])#手动设置…...

如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查

本文作者&#xff1a;阿里云Flink SQL负责人&#xff0c;伍翀&#xff0c;Apache Flink PMC Member & Committer 众多数据领域的专业人士都很熟悉Apache Flink&#xff0c;它作为流式计算引擎&#xff0c;流批一体&#xff0c;其核心在于其强大的分布式流数据处理能力&…...

ActiveMQ、RabbitMQ 和 Kafka 在 Spring Boot 中的实战

在现代的微服务架构和分布式系统中&#xff0c;消息队列 是一种常见的异步通信工具。消息队列允许应用程序之间通过 生产者-消费者模型 进行松耦合、异步交互。在 Spring Boot 中&#xff0c;我们可以通过简单的配置来集成不同的消息队列系统&#xff0c;包括 ActiveMQ、Rabbit…...

火语言RPA流程组件介绍--获取关联元素

&#x1f6a9;【组件功能】&#xff1a;获取指定元素的父元素、子元素、相邻元素等关联信息 配置预览 配置说明 目标元素 支持T或# 默认FLOW输入项 通过自动捕获工具捕获(选择元素工具使用方法)或手动填写网页元素的css,xpath&#xff0c;指定对应网页元素作为操作目标 关联…...

【2024研赛】【华为杯E题】2024 年研究生数学建模比赛思路、代码、论文助攻

思路将在名片下群聊分享 高速公路应急车道紧急启用模型 高速公路拥堵现象的原因众多&#xff0c;除了交通事故外&#xff0c;最典型的就是部分路段出现瓶颈现象&#xff0c;主要原因是车辆汇聚&#xff0c;而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点&#xff0…...

Linux——K8s集群部署过程

&#xff11;、环境准备 &#xff08;1&#xff09;配置好网络ip和主机名 control: node1: node2: 配置ip 主机名的过程省略 配置一个简单的基于hosts文件的名称解析 [rootnode1 ~]# vim /etc/hosts // 文件中新增以下三行 192.168.110.10 control 192.168.110.11 node1 1…...

二.Unity中使用虚拟摇杆来控制角色移动

上一篇中我们完成了不借助第三方插件实现手游的虚拟摇杆&#xff0c;现在借助这个虚拟摇杆来实现控制角色的移动。 虚拟摇杆实际上就给角色输出方向&#xff0c;类似于键盘的WSAD&#xff0c;也是一个二维坐标&#xff0c;也就是(-1,1)的范围&#xff0c;将摇杆的方向进行归一化…...

基于SpringBoot的旅游管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 近年来&#xff0c;随着社会经济的快速发展和人民生活水平的显著提高&#xff0c;旅游已成为人们休闲娱乐、增长见识的重要方式。国家积极倡导“全民旅游”&#xff0c;鼓励民众利用节假日外出旅行&#xff0c;探索各地自然与人…...

Linux套接字

目录标题 套接字套接字的基本概念套接字的功能与分类套接字的使用流程套接字的应用场景总结套接字在不同操作系统中的实现差异有哪些&#xff1f;如何优化套接字编程以提高网络通信的效率和安全性&#xff1f;原始套接字&#xff08;SOCK_RAW&#xff09;的具体应用场景和使用示…...

软件测试面试题(5)——二面(游戏测试)

没想到测试题做完等了会儿就安排面试了&#xff0c;还以为自己会直接挂在测试题&#xff0c;这次面试很刺激。测试题总体来说不算太难&#xff0c;主要是实操写Bug那里真没经历过&#xff0c;所以写的很混乱。 我复盘一下这次面试的问题&#xff0c;这次面试是有两个面试官&…...

C#基于SkiaSharp实现印章管理(8)

上一章虽然增加了按路径绘制文本&#xff0c;支持按矩形、圆形、椭圆等路径&#xff0c;但测试时发现通过调整尺寸、偏移量等方式不是很好控制文本的位置。相对而言&#xff0c;使用弧线路径&#xff0c;通过弧线起始角度及弧线角度控制文本位置更简单。同时基于路径绘制文本时…...

信通院发布首个《大模型媒体生产与处理》标准,阿里云智能媒体服务作为业界首家“卓越级”通过

中国信通院近期正式发布《大模型驱动的媒体生产与处理》标准&#xff0c;阿里云智能媒体服务&#xff0c;以“首批首家”通过卓越级评估&#xff0c;并在9大模块50余项测评中表现为“满分”。 当下&#xff0c;AI大模型的快速发展带动了爆发式的海量AI运用&#xff0c;这其中&a…...

AI学习指南深度学习篇-Adam的Python实践

AI学习指南深度学习篇-Adam的Python实践 在深度学习领域&#xff0c;优化算法是影响模型性能的关键因素之一。Adam&#xff08;Adaptive Moment Estimation&#xff09;是一种广泛使用的优化算法&#xff0c;因其在多种问题上均表现优异而被广泛使用。本文将深入探讨Adam优化器…...

08_React redux

React redux 一、理解1、学习文档2、redux 是什么吗3、什么情况下需要使用 redux4、redux 工作流程5、react-redux 模型图 二、redux 的三个核心概念1、action2、reducer3、store 三、redux 的核心 API1、getState()2、dispatch() 四、使用 redux 编写应用1、求和案例\_redux 精…...

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会直接更新A、B题思路&#…...

大海捞针:从海量真实世界5G-A基站数据中追踪无人机

大家读完觉得有帮助记得关注和 点赞&#xff01;&#xff01;&#xff01; 摘要 无人机在日常生活中的潜在应用使得对其监控变得至关重要。然而&#xff0c;现有的无人机监控系统通常依赖于摄像头、激光雷达或雷达&#xff0c;这些系统的感知范围有限或部署成本高昂&#xff0…...

Windows下Gradle全局镜像配置避坑指南:从环境变量到init.gradle

Windows下Gradle全局镜像配置避坑指南&#xff1a;从环境变量到init.gradle 每次打开Android Studio准备大干一场时&#xff0c;那个卡在"Downloading gradle-xxx-all.zip"的进度条是不是让你想砸键盘&#xff1f;作为常年与Gradle斗智斗勇的老司机&#xff0c;今天我…...

LM358充电器电路设计:从原理到实践

1. LM358芯片基础解析 LM358这颗双运放芯片可以说是电子设计领域的"万金油"了。我第一次接触它是在大学电子竞赛时&#xff0c;老师随手扔给我们几片说&#xff1a;"用这个&#xff0c;不容易烧。"果然&#xff0c;从5V到32V的宽电压范围让它成为新手最友好…...

Linux音频音量太小?别急着改代码,试试amixer这个终端神器

Linux音频音量调整终极指南&#xff1a;告别代码级修改&#xff0c;掌握amixer命令行艺术 当你在深夜调试语音识别项目时&#xff0c;突然发现树莓派录制的样本几乎听不见&#xff1b;或是准备录制技术教程视频时&#xff0c;Ubuntu系统的输出音量小得可怜——这种场景下&#…...

2026年Java程序员冲大厂有何经验套路?

前几天&#xff0c;跟个老朋友吃饭&#xff0c;他最近想跳槽去大厂&#xff0c;觉得压力很大&#xff0c;问我能不能分享些所谓的经验套路。每次有这类请求&#xff0c;都觉得有些有趣&#xff0c;不知道你发现没有大家身边真的有很多人不知道怎么面试&#xff0c;也不知道怎么…...

新手福音:在快马平台用自然语言生成你的第一个powershell脚本

今天想和大家分享一个特别适合 PowerShell 新手的入门实践。作为一个从零开始学习 PowerShell 的菜鸟&#xff0c;我发现用自然语言描述需求就能生成可运行的脚本&#xff0c;这个体验真的太友好了。 变量定义与数据结构 刚开始学习时&#xff0c;最基础的就是理解变量和数据结…...

基于西门子PLC的空压机组储气风冷机组自动控制系统:“手动自动切换、多机控制及实时监测报警系统

基于西门子plc的空压机组储气风冷机组自动控制系统 可以实现手动自动切换 三组空压机分别自动控制&#xff0c;自动检测三路压力 风冷机运行实时检测 报警查寻&#xff0c;参数设置等上周刚把车间那套跑了快十年的空压机组控制系统给换了&#xff0c;用的是西门子S7-1200&#…...

HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案

HsMod&#xff1a;炉石传说个性化增强工具 玩家的全方位游戏体验优化方案 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否曾因炉石传说中繁琐的操作流程而感到沮丧&#xff1f;是否希望拥有…...

告别原生IDE!用HBuilderX 3.6.8+和UTS插件5分钟搞定安卓Toast功能

5分钟解锁安卓Toast&#xff1a;HBuilderXUTS插件的高效开发实战 还在为Android Studio的臃肿和配置繁琐头疼&#xff1f;UniApp开发者现在有了更优雅的选择。想象一下&#xff1a;用熟悉的TypeScript语法直接调用原生API&#xff0c;无需切换开发环境&#xff0c;5分钟实现安卓…...

Z-Image Turbo实际作品分享:城市风光生成效果

Z-Image Turbo实际作品分享&#xff1a;城市风光生成效果 本文所有内容均为技术效果展示&#xff0c;不涉及任何政治敏感内容&#xff0c;所有案例均为技术演示用途。 1. 效果概览&#xff1a;城市风光的AI艺术呈现 Z-Image Turbo作为基于Gradio和Diffusers构建的高性能AI绘图…...