主要内容

이번역번역이지는최신내용을담고담고않습니다않습니다。최신최신내용을영문영문으로여기를클릭클릭

사전훈련된Keras계층에서신경망조합하기

이예제에서는사전훈련된Keras신경망에서계층을가져오고지원되지않는계층을사용자지정계층으로바꾼다음이러한계층을예측을실행할준비가된신경망으로조합하는방법을보여줍니다。

Keras신경망가져오기

Keras신경망모델에서계층을가져옵니다。'digitsDAGnetwithnoise.h5'의신경망은숫자영상을분류합니다。

filename =.'digitsDAGnetwithnoise.h5';lgraph = importKerasLayers(文件名,'ImportWeights',真的);
警告:无法导入一些Keras层,因为他们没有被深度学习工具箱支持。金宝app他们已被替换占位符层。为了找到这些层,调用返回的对象的功能findPlaceholderLayers。

Keras신경망은深度学习工具箱에서지원하지않는몇몇계층을포함합니다。importKeraslayers.00

阴谋을사용하여계층그래프를플로팅합니다。

图图(lgraph)称号(“进口网络”

자리표시자계층바꾸기

자리표시자계층을바꾸려면먼저바꾸려는계층의이름을식별하십시오。FindPlaceHolderLayers.를사용하여자리표시자계층을찾습니다。

placeholderLayers = findPlaceholderLayers(lgraph)
placeholderLayers = 2×1 PlaceholderLayer阵列层:1 'gaussian_noise_1' PLACEHOLDER LAYER占位符 '高斯噪声' Keras层2 'gaussian_noise_2' PLACEHOLDER LAYER占位符 '高斯噪声' Keras层

이러한계층의Keras구성을표시합니다。

placeholderLayers.KerasConfiguration
ans =.同场的结构:可训练:1名: 'gaussian_noise_1' STDDEV:1.5000
ans =.同场的结构:可训练:1名: 'gaussian_noise_2' STDDEV:0.7000

사용자지정가우스잡음계층을정의합니다。이계층을만들려면파일gaussianNoiseLayer.m을현재폴더에저장하십시오。그런다음가져온Keras계층과같은구성을갖는가우스잡음계층을2개만듭니다。

gnLayer1 = gaussianNoiseLayer(1.5,'new_gaussian_noise_1');Gnlayer2 =高斯登机会(0.7,'new_gaussian_noise_2');

replaceLayer를사용하여자리표시자계층을사용자지정계층으로바꿉니다。

lgraph = replaceLayer(lgraph,'gaussian_noise_1',gnLayer1);lgraph = replaceLayer(lgraph,'gaussian_noise_2',gnlayer2);

阴谋을사용하여업데이트된계층그래프를플로팅합니다。

图图(lgraph)称号(“网络替换为图层”

클래스이름지정하기

가져온분류계층이클래스를포함하지경우,예측예측을실행하기전에먼저클래스지정해야해야클래스를지정하지않으면클래스가자동으로12,......,N으로설정됩니다。여기서N은클래스의개수입니다。

계층그래프의层数속성을확인하여분류계층의인덱스를찾습니다。

lgraph.Layers
ANS = 15X1层阵列层:1 'INPUT_1' 图像输入28x28x1图像2 'conv2d_1' 卷积20个7x7x1卷积步幅[1 1]和填充 '相同' 3 'conv2d_1_relu' RELU RELU 4 'conv2d_2' 卷积20个3x3x1卷积用步幅[1 1]和填充“相同的” 5“conv2d_2_relu” RELU RELU 6“new_gaussian_noise_1”高斯噪声高斯噪声标准偏差1.5 7“new_gaussian_noise_2”高斯噪声高斯噪声标准偏差0.7 8“max_pooling2d_1”最大池2x2的最大池与步幅[2 2]和填补“相同” 9“max_pooling2d_2”最大池2x2的最大蓄留与步幅[2 2]和填补“相同” 10“flatten_1” Keras平铺展平激活成1- d假设C-式(行主)order 11 'flatten_2' Keras Flatten Flatten activations into 1-D assuming C-style (row-major) order 12 'concatenate_1' Depth concatenation Depth concatenation of 2 inputs 13 'dense_1' Fully Connected 10 fully connected layer 14 'activation_1' Softmax softmax 15 'ClassificationLayer_activation_1' Classification Output crossentropyex

분류계층의이름은'ClassificationLayer_activation_1'입니다。분류계층을표시하고班级속성을확인합니다。

CLAYER = lgraph.Layers(结束)
Clayer = PlassificationOutputLayer具有属性:名称:'ClassificationLayer_Activation_1'类:'Auto'Outputsize:'Auto'HyperParameters LockFunction:'CrossentRopyex'

계층의班级속성이'汽车'이므로클래스를수동으로지정해야합니다。클래스를0.1,......,9.로설정한다음가져온분류계층을새로운분류계층으로바꿉니다。

clayer.classes = string(0:9)
CLAYER = ClassificationOutputLayer与属性:名称: 'ClassificationLayer_activation_1' 类:[0 1 2 3 4 5 6 7 8 9] OutputSize:10超参数LossFunction: 'crossentropyex'
lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',CLAYER);

신경망조합하기

汇编를사용하여계층그래프를조합합니다。함수가예측을실행할준비가된DAGNetwork객체를반환합니다。

净= assembleNetwork(lgraph)
净= DAGNetwork与属性:层:[15X1 nnet.cnn.layer.Layer]连接:[15X2表] InputNames:{ 'INPUT_1'} OutputNames:{ 'ClassificationLayer_activation_1'}

참고항목

|||||||

관련항목