【人工智能项目】- 深度学习实现猫狗大战

【深度学习】经典案例:猫狗大战(kaggle实战完整流程:数据集分割、预处理、模型搭建、模型参数保存、acc/loss可视化) 基于`tensorFlow`框架搭建神经网络,从零开始一步步完成数据读取、网络构建、模型训练和模型测试等过程,最终实现一个可以进行猫狗图像分类的分类器;并借助数据增强技术,例如旋转、翻转、缩放等,来增加数据集的多样性,从而提高模型的泛化能力和鲁棒性。 阅读详情

【人工智能项目】- 深度学习实现猫狗大战

在这里插入图片描述
本次实现猫狗大战,实质上就是猫狗的二分类任务。

环境

!nvidia-smi
Mon Jun 22 04:24:29 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.36.06    Driver Version: 418.67       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:04.0 Off |                    0 |
| N/A   38C    P8    26W / 149W |      0MiB / 11441MiB |      0%      Default |
|                               |                      |                 ERR! |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
!unzip cats_and_dogs.zip
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os
import time
import datetime
import sys
import glob

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.utils import class_weight as cw

from keras import Sequential

from keras.models import Model

from keras.layers import LSTM,Activation,Dense,Dropout,Input,Embedding,BatchNormalization,Add,concatenate,Flatten
from keras.layers import Conv1D,Conv2D,Convolution1D,MaxPool1D,SeparableConv1D,SpatialDropout1D,GlobalAvgPool1D,GlobalMaxPool1D,GlobalMaxPooling1D
from keras.layers.pooling import _GlobalPooling1D
from keras.layers import MaxPooling2D,GlobalMaxPooling2D,GlobalAveragePooling2D

from keras.optimizers import RMSprop,Adam

from keras.preprocessing.text import Tokenizer
from keras.preprocessing import sequence

from keras.utils import to_categorical

from keras.callbacks import EarlyStopping
from keras.callbacks import ModelCheckpoint
from keras.callbacks import ReduceLROnPlateau


from keras import __version__
from keras.applications.inception_v3 import InceptionV3, preprocess_input
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import Adam

%matplotlib inline

import warnings
warnings.filterwarnings("ignore")
/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.
  import pandas.util.testing as tm
Using TensorFlow backend.

读取数据

img_width,img_height = 299, 299    #修正 InceptionV3 的尺寸参数
epochs = 5
batch_size = 32
fc_size = 1024
def get_nb_files(directory):
    """Get number of files by searching directory recursively"""
    if not os.path.exists(directory):
        return 0
    cnt = 0
    for r, dirs, files in os.walk(directory):
        for dr in dirs:
            cnt += len(glob.glob(os.path.join(r, dr + "/*")))       # glob模块是用来查找匹配文件的,后面接匹配规则。
    return cnt
    
# 定义增加最后一个全连接层的函数
def add_new_last_layer(base_model, nb_classes):
    """Add last layer to the convnet

    Args:
        base_model: keras model excluding top
        nb_classes: # of classes

    Returns:
        new keras model with last layer
    """
    x = base_model.output
    x = GlobalAveragePooling2D()(x)
    x = Dense(fc_size, activation='relu')(x) #new FC layer, random init
    predictions = Dense(nb_classes, activation='softmax')(x) #new softmax layer
    model = Model(inputs=base_model.input, outputs=predictions)
    return model

# 定义微调函数
def setup_to_finetune(model):
    """Freeze the bottom NB_IV3_LAYERS and retrain the remaining top layers.

        note: NB_IV3_LAYERS corresponds to the top 2 inception blocks in the inceptionv3 arch

    Args:
        model: keras model
    """
    # for layer in model.layers[:NB_IV3_LAYERS_TO_FREEZE]:
    #     layer.trainable = False
    for layer in model.layers[:]:
        layer.trainable = True
    model.compile(optimizer=Adam(lr=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])
train_dir= "./train"
valid_dir = "./validation"
nb_classes = len(glob.glob(train_dir + "/*"))
# nb_val_samples = get_nb_files(val_dir)
epochs = int(epochs)
batch_size = int(batch_size)
train_data = ImageDataGenerator(
    # 浮点数,剪切强度(逆时针方向的剪切变换角度)
    shear_range=0.1,
    # 随机缩放的幅度,若为浮点数,则相当于[lower,upper] = [1 - zoom_range, 1+zoom_range]
    zoom_range=0.1,
    # 浮点数,图片宽度的某个比例,数据提升时图片水平偏移的幅度
    width_shift_range=0.1,
    # 浮点数,图片高度的某个比例,数据提升时图片竖直偏移的幅度
    height_shift_range=0.1,
    # 布尔值,进行随机水平翻转
    horizontal_flip=True,
    # 布尔值,进行随机竖直翻转
    vertical_flip=True,
    # 在 0 和 1 之间浮动。用作验证集的训练数据的比例
#         validation_split=0.3
    )

# 接下来生成验证集,可以参考训练集的写法
validation_data = ImageDataGenerator(
    # 浮点数,剪切强度(逆时针方向的剪切变换角度)
    shear_range=0.1,
    # 随机缩放的幅度,若为浮点数,则相当于[lower,upper] = [1 - zoom_range, 1+zoom_range]
    zoom_range=0.1,
    # 浮点数,图片宽度的某个比例,数据提升时图片水平偏移的幅度
    width_shift_range=0.1,
    # 浮点数,图片高度的某个比例,数据提升时图片竖直偏移的幅度
    height_shift_range=0.1,
    # 布尔值,进行随机水平翻转
    horizontal_flip=True,
    # 布尔值,进行随机竖直翻转
    vertical_flip=True,
)

train_generator = train_data.flow_from_directory(
    # 提供的路径下面需要有子目录
    train_dir,
    # 整数元组 (height, width),默认:(256, 256)。 所有的图像将被调整到的尺寸。
    target_size=(299,299),
    # 一批数据的大小
    batch_size=batch_size,
    # "categorical", "binary", "sparse", "input" 或 None 之一。
    # 默认:"categorical",返回one-hot 编码标签。
    class_mode='categorical',
    seed=0)

validation_generator = train_data.flow_from_directory(
    valid_dir,
    target_size=(299,299),
    batch_size=batch_size,
    class_mode='categorical',
    seed=0)
Found 1800 images belonging to 2 classes.
Found 600 images belonging to 2 classes.

模型准备

# 准备跑起来,首先给 base_model 和 model 赋值,迁移学习和微调都是使用 InceptionV3 的 notop 模型(看 inception_v3.py 源码,此模型是打开了最后一个全连接层),利用 add_new_last_layer 函数增加最后一个全连接层。

base_model = InceptionV3(weights="imagenet", include_top=False)  # include_top=False excludes final FC layer
model = add_new_last_layer(base_model, nb_classes)


print("开始微调:\n")

# fine-tuning
setup_to_finetune(model)
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5
87916544/87910968 [==============================] - 1s 0us/step
开始微调:
model.summary()
Model: "model_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, None, None, 3 0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, None, None, 3 864         input_1[0][0]                    
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, None, None, 3 96          conv2d_1[0][0]                   
__________________________________________________________________________________________________
activation_1 (Activation)       (None, None, None, 3 0           batch_normalization_1[0][0]      
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, None, None, 3 9216        activation_1[0][0]               
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, None, None, 3 96          conv2d_2[0][0]                   
__________________________________________________________________________________________________
activation_2 (Activation)       (None, None, None, 3 0           batch_normalization_2[0][0]      
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, None, None, 6 18432       activation_2[0][0]               
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, None, None, 6 192         conv2d_3[0][0]                   
__________________________________________________________________________________________________
activation_3 (Activation)       (None, None, None, 6 0           batch_normalization_3[0][0]      
__________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)  (None, None, None, 6 0           activation_3[0][0]               
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, None, None, 8 5120        max_pooling2d_1[0][0]            
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, None, None, 8 240         conv2d_4[0][0]                   
 
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 2048)         0           mixed10[0][0]                    
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 1024)         2098176     global_average_pooling2d_1[0][0] 
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 2)            2050        dense_1[0][0]                    
==================================================================================================
Total params: 23,903,010
Trainable params: 23,868,578
Non-trainable params: 34,432
__________________________________________________________________________________________________
print("Setting Callbacks")

checkpoint = ModelCheckpoint("model.h5",
                                                     monitor="val_loss",
                                                     save_best_only=True,
                                                     mode="min")

early_stopping = EarlyStopping(monitor="val_loss",
                                                     patience=3,
                                                     verbose=1,
                                                     restore_best_weights=True,
                                                     mode="min")

reduce_lr = ReduceLROnPlateau(monitor="val_loss",
                                                      factor=0.6,
                                                      patience=2,
                                                      verbose=1,
                                                      mode="min")

callbacks=[checkpoint,early_stopping,reduce_lr]
Setting Callbacks

训练

history_ft = model.fit_generator(
    train_generator,
    steps_per_epoch=1800   // batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=600    // batch_size,
    callbacks=callbacks)
Epoch 1/20
56/56 [==============================] - 139s 2s/step - loss: 0.1774 - accuracy: 0.9259 - val_loss: 0.0389 - val_accuracy: 0.9358
Epoch 2/20
56/56 [==============================] - 99s 2s/step - loss: 0.0824 - accuracy: 0.9729 - val_loss: 0.1625 - val_accuracy: 0.9648
Epoch 3/20
56/56 [==============================] - 98s 2s/step - loss: 0.0448 - accuracy: 0.9825 - val_loss: 0.0261 - val_accuracy: 0.9577
Epoch 4/20
56/56 [==============================] - 98s 2s/step - loss: 0.0432 - accuracy: 0.9898 - val_loss: 0.1232 - val_accuracy: 0.9789
Epoch 5/20
56/56 [==============================] - 97s 2s/step - loss: 0.0311 - accuracy: 0.9893 - val_loss: 0.1762 - val_accuracy: 0.9366

Epoch 00005: ReduceLROnPlateau reducing learning rate to 5.999999848427251e-05.
Epoch 6/20
56/56 [==============================] - 96s 2s/step - loss: 0.0182 - accuracy: 0.9926 - val_loss: 0.4272 - val_accuracy: 0.9630
Restoring model weights from the end of the best epoch
Epoch 00006: early stopping

展示

# 画曲线
def plot_performance(history=None,figure_directory=None,ylim_pad=[0,0]):
    xlabel="Epoch"
    legends=["Training","Validation"]
    
    plt.figure(figsize=(20,5))
    
    y1=history.history["accuracy"]
    y2=history.history["val_accuracy"]
    
    min_y=min(min(y1),min(y2))-ylim_pad[0]
    max_y=max(max(y1),max(y2))+ylim_pad[0]
    
    plt.subplot(121)
    
    plt.plot(y1)
    plt.plot(y2)
    
    plt.title("Model Accuracy\n",fontsize=17)
    plt.xlabel(xlabel,fontsize=15)
    plt.ylabel("Accuracy",fontsize=15)
    plt.ylim(min_y,max_y)
    plt.legend(legends,loc="upper left")
    plt.grid()
    
    y1=history.history["loss"]
    y2=history.history["val_loss"]
    
    min_y=min(min(y1),min(y2))-ylim_pad[1]
    max_y=max(max(y1),max(y2))+ylim_pad[1]
    
    plt.subplot(122)
    
    plt.plot(y1)
    plt.plot(y2)
    
    plt.title("Model Loss:\n",fontsize=17)
    plt.xlabel(xlabel,fontsize=15)
    plt.ylabel("Loss",fontsize=15)
    plt.ylim(min_y,max_y)
    plt.legend(legends,loc="upper left")
    plt.grid()
    plt.show()

plot_performance(history_ft)

在这里插入图片描述


import numpy as np
import pandas as pd
import os
import random
import matplotlib.pyplot as plt
from keras import regularizers
from PIL import Image
from tensorflow.keras.preprocessing import image
import glob
# Image processing
from PIL import Image, ImageFile
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from keras.layers import Dropout
from keras.layers import BatchNormalization
from keras.callbacks import EarlyStopping
import keras.backend as K
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPool2D, Flatten
from keras.layers import Activation, Dense
from keras.utils.np_utils import to_categorical
from keras.optimizers import SGD, Adam, Adagrad, RMSprop
from sklearn.metrics import confusion_matrix
import seaborn as sns
import tensorflow as tf
from keras.models import load_model
from keras.preprocessing import image
from sklearn.metrics import accuracy_score

true=[]
pred=[]

garbage_types = ['cats','dogs']
labels = {0:'cats',1:'dogs'}

model_path = 'model.h5'
model = load_model(model_path)

for garbage in garbage_types:
    files = glob.glob("./test/" + str(garbage) + "/*.jpg")
    for myFile in files:
        t = list(labels.keys())[list(labels.values()).index(str(garbage))]
        true.append(t)
        img = image.load_img(myFile,target_size=(224,224))
        input_image = image.img_to_array(img)
        
    
        # 加载模型,加载请注意 model_path 是相对路径, 与当前文件同级。
        # 如果你的模型是在 results 文件夹下的 dnn.h5 模型,则 model_path = 'results/dnn.h5'
        # -------------------------- 实现模型预测部分的代码 ---------------------------
        # expand_dims的作用是把img.shape转换成(1, img.shape[0], img.shape[1], img.shape[2])
        x = np.expand_dims(img, axis=0)
     # 模型预测
        y = model.predict(x)
        predict = labels[np.argmax(y)]
        pred.append(np.argmax(y))


acc = accuracy_score(true,pred)
print(acc)
con_matrix = confusion_matrix(true, pred,
                              labels=[0, 1])
plt.figure(figsize=(10, 10))
plt.title('Prediction of garbage types')
plt.ylabel('True label')
plt.xlabel('Predicted label')
# plt.show(sns.heatmap(con_matrix, annot=True, fmt="d",annot_kws={"size": 7},cmap='Blues',square=True))
ax = sns.heatmap(con_matrix, annot=True, fmt="d", annot_kws={"size": 7}, cmap='Blues', square=True)
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)
plt.show()
0.9716666666666667

在这里插入图片描述

小结

本次就用迁移学习的方式完成猫狗二分类任务,很简单的任务。
瓷们,还是点赞收藏评论走起来!!!
在这里插入图片描述

[Python深度学习]kaggle猫狗大战 1、kaggle链接 2、在此处新建一个notebook(和Jupyter Notebook类似) 在右上角可以看到猫狗大战所需要用到的数据集 3、首先将数据集进行解压 (为避免切换到错误的目录下执行下列代码,这里采用的是绝对路径) train_path = '/kaggle/input/dogs-vs-cats/train.zip' test_path = '/kaggle/input/dogs-vs-cats/test1.zip' # save all files to kaggle/files/ 阅读详情

相关推荐

深度学习实战---猫狗大战(pytorch实现)

数据准备 猫狗大战数据集下载链接 微软的数据集已经分好类,直接使用就行, 数据划分 我们将猫和狗的图片分别移动到训练集和验证集中,其中90%的数据作为训练集,10%的图片作为验证集,使用shutil.move()来移动图片。 新建文件夹train,test,将数据集放入train中,利用代码将10%的数据移动到test中 文件移动代码 import os import shutil source_path = r"E:\猫狗大战数据集\PetImages" train_dir = os.

暮木的博客 1万+

深度学习之基于CNN和VGG19实现猫狗大战

猫狗大战在一开始接触深度学习的时候,实现过,也写过一篇博客。但是当时的理解并不是很深,在做过之前的实验之后,再次接触猫狗大战,就有一些别的体会了。 本次实验基于自己搭建的CNN与VGG19的官方模型,实现猫狗大战。引入混淆矩阵与Accuracy_Loss图观察模型准确率。 1.导入库 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt import os,pathlib,PIL from tensorflow

starlet_kiss的博客 3455

深度学习-使用tensorflow实现猫狗识别

最近一直在撸猫,为了猫主子的事情忧三愁四,皱纹多了不少,头发也掉了好几根,神态也多了几分忧郁,唯一不变的还是那份闲鱼的懒散和浪荡的心。 要说到深度学习图像分类的经典案例之一,那就是猫狗大战了。猫和狗在外观上的差别还是挺明显的,无论是体型、四肢、脸庞和毛发等等, 都是能通过肉眼很容易区分的。 那么如何让机器来识别猫和狗呢?这就需要使用卷积神经网络来实现了。 网上已经有不少人写过这案例了,我也来尝试下...

banaoxie0070的博客 1万+

深度学习案例--猫狗大战(vgg16实现)

这是一个基于OneAPI并使用vgg16实现猫狗图像识别的深度学习小项目

m0_62412733的博客 1530

基于深度学习的猫狗分类实战

定义训练过程out_t = output.argmax(dim=1) #取出预测的最大值通过本次猫狗分类项目的实践,我们深入掌握了深度学习在图像分类中的应用技术。未来,可以进一步探索更先进的模型架构和训练方法,提高分类的准确率和泛化能力,并将其应用到更广泛的图像分类任务中。

2301_81698853的博客 1887

用深度学习卷积神经网络实现图像识别之猫狗大战

在框架结构运用熟悉以后,数据预处理是一个需要多加练习的方面。

繁华三千东流水不舍昼夜的博客 4531

深度学习-BP实战 猫狗大战

猫狗大战是指使用机器学习技术,特别是深度学习,对猫和狗的图片进行识别和分类的过程。这个过程的基本原理是通过训练一个深度神经网络模型,使其能够根据输入的图片数据,自动识别和区分出猫和狗。一、基本步骤# 第3步:定义和训练模型criterion = torch.nn.NLLLoss() # 定义loss函数optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) # 定义优化器epochs = 20 # 一共训练15轮。

shiguang521314的博客 1212

keras实例之猫狗大战

猫狗大战 即使用keras库训练模型,然后识别猫狗图片/照片 keras简介 Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。 Keras 兼容的 Python 版本: Python 2.7-3.6。 一定要下载兼容的版本 Python中安装keras库 先前准备 在安装Keras之前,请安装以下后...

wangbyby 2173

Python分类实例之猫狗大战

pytorch之猫狗大战编程实战指南比赛数据集介绍(Dogs vs cats)环境配置模型定义数据加载训练和测试结果展示参考 编程实战指南 通过前面课程的学习,相信同学们已经掌握了Pytorch中大部分的基础知识,本节课将结合之前讲的内容,带领同学们从头实现一个完整的深度学习项目。本节课的重点不在于如何使用Pytorch的接口,而在于合理的设计程序的结构,使得程序更具可读性、更易用。 在学习某个深度学习框架时,掌握其基本知识和接口固然重要,但如何合理地组织代码,使代码具有良好的可读性和可扩展性也很关键。在做

ZHW-鲜橙大AI课题组的博客 1万+

猫狗大战完整代码+详细文档+模型参数

文档包括:kaggle实战完整流程:数据集分割、预处理、模型搭建、模型参数保存、acc/loss可视化。 代码ipynb格式为每步运行结果,步骤更清晰。

猫狗大战数据集

猫狗分类数据集不包含在Keras 中,它由Kaggle 在2013 年末公开并作为一项 计算视觉竞赛的一部分,大小为540M,所以上传到了百度网盘,这里面是资源链接,下载后可以去连接下载数据集。

基于Keras实战项目-猫狗熊猫分类大战

我们从上次博客当中就结束了关于OpenCV的更新,后续可能会再次更新关于计算机视觉领域的相关内容。但是现在开始更新关于神经网络keras模块下的实战项目,首节我们以一个简单的项目为开头,然后逐个分析神经网络的小模块对整体网络架构的准确性和损失函数的影响。其中包括(Drop-out,dense等等)。

m0_37623374的博客 4156

Ollama模型路径迁移实战:Windows/Mac/Linux三系统保姆级教程(附常见问题排查)

本文提供了一份详细的Ollama模型路径迁移教程,涵盖Windows、macOS和Linux三大操作系统。针对默认安装路径占用系统盘空间的问题,文章指导用户如何安全移动模型文件、配置环境变量、重启服务,并附有迁移后的验证步骤与常见问题排查方法,帮助用户高效管理本地AI模型存储。

gray5的博客 545

深度学习进阶:猫狗大战完整项目(一)

学习深度学习5个月左右,发现网上资料呈现出两极分化的趋势。简单教程如手写识别,用别人的网络替换自己的数据,前沿的资料,如github上公开的顶会论文源码,论文解读之类的还是挺多的。简单的太简单,复杂的看不懂,缺少中间路径。这就导致了包括我在内的很多人,过了配环境,调试别人代码的阶段之后没有办法更进一步。我一直试图找一个中间阶段的教程来学习,直到最近看到一本叫《practitioner bundle...

liu506039293的博客 6509

TensorRT-LLM.V1.1.0rc0:在无 GitHub 访问权限的服务器上编译 TensorRT-LLM 的完整实践

1.NGC上的预构建发布容器进行部署,见《2.通过pip进行部署。3.从源头构建再部署。在实际开发中,我们常常面临这样的场景:本地笔记本为 Windows 系统,虽然可以访问 GitHub,但受限于硬件性能,编译大型项目(如 TensorRT-LLM)耗时过长;而公司或实验室提供的 Linux 服务器性能强劲,适合编译任务,但却因网络策略限制无法连接外网,尤其是无法访问 GitHub。。

xinvictory的专栏 1205

Abel逆变换及其求解方法

Abel逆变换常应用在轴对称的、光学薄的火焰、羽流或等离子体重建。

weixin_49783507的博客 8378

Keras 深度学习之猫狗大战

项目地址和代码:Project_Dogs_vs_Cats 项目详细报告:Report_dogs_vs_cats.pdf keras 版本:2.1.5 1.问题定义和数据集获取: 项目属于计算机视觉领域中的图像分类问题。图像分类的过程非常明确:给定已经标记的数据集,提取特征,训练得到分类器。项目使用Kaggle竞赛提供的Dogsvs. Cats数据集,任务是对给定的猫和狗的图片进...

mechleechan的博客 1万+

TouchSocket TcpService:构建高性能Tcp服务的终极利器

/ 接收到的数据data");// 回复客户端await ((ITcpSessionClient)client).SendAsync("服务端已收到消息!");// 继续执行后续插件TouchSocket的TCPService以极简的API、强大的扩展性和卓越的性能,重新定义了.NET TCP服务的开发体验。无论是物联网平台还是金融级实时通信系统,TCPService均能提供可靠的基础设施支持。立即探索示例项目,开启你的高性能服务开发之旅!扩展阅读如何实现WebSocket服务?

若汝棋茗 的博客 1461

PyTorch深度学习图像分类--猫狗大战

使用Pytorch进行了深度学习中一个案例的练习:猫狗大战,完整的体验了深度学习流程。

JJSXBL的博客 2526

用宝塔面板+CentOS 7.6,30分钟搞定DNF手游私服搭建(附全套资源下载)

本文详细介绍了如何使用宝塔面板和CentOS 7.6在30分钟内快速搭建DNF手游私服。通过图形化界面操作,无需复杂命令,即可完成服务端部署、MySQL数据库配置及客户端适配,适合Linux新手快速上手。

weixin_33737774的博客 611

【Unity】ABB CRB 15000 外部引导运动实战:从配置到实时控制

本文详细介绍了ABB CRB 15000协作机器人的外部引导运动(EGM)功能在Unity环境中的实战应用。从RobotStudio配置到Unity实时通信架构,再到EGM运动控制技巧和问题排查,全面解析如何实现机器人的高精度实时控制。通过实际案例展示EGM技术在精密装配等场景中的显著效果,帮助开发者快速掌握这一先进技术。

weixin_29057695的博客 445

深度学习 -BP实战 猫狗大战

第3步:定义和训练模型criterion = torch.nn.NLLLoss() # 定义loss函数optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) # 定义优化器epochs = 20 # 一共训练15轮running_loss = 0 # 本轮的损失值# 前向传播获取预测值# 计算损失# 进行反向传播# 更新权重# 清空梯度# 累加损失# 一轮循环结束后打印本轮的损失函数。

2203_75840835的博客 1462

告别‘小目标’丢失!手把手复现DNANet红外检测网络(PyTorch版)

本文详细介绍了如何使用PyTorch从零实现DNANet红外小目标检测网络,重点解析了DNIM模块和CSAM注意力机制的设计与实现。通过实战教程,帮助开发者解决红外小目标检测中的特征提取和训练调参难题,适用于军事侦察、安防监控等场景。

weixin_28701593的博客 254

飞浆PaddlePaddle 猫狗数据大战

而在。

2301_80109683的博客 1698

《低功耗方法学》翻译——第一章:介绍

第一章:介绍

记录所学,分享知识,结识挚友 2069

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Pytorch实战第一步--用经典神经网络实现猫狗大战

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、猫狗大战数据集 二、pytorch实战 1.程序整体结构 2.读入数据 3.网络结构 4.网络结构 5测试 总结 总结 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 在目前的深度学习中,应用最广泛的...

qq_38212628的博客 2980

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 【人工智能项目】MNIST手写体识别实验及分析
下一篇: 【人工智能项目】LSTM实现电影评论情感分类实验
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值