이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。
이예제에서는사전훈련된Keras신경망에서계층을가져오고지원되지않는계층을사용자지정계층으로바꾼다음이러한계층을예측을실행할준비가된신경망으로조합하는방법을보여줍니다。
Keras신경망모델에서계층을가져옵니다。“digitsDAGnetwithnoise.h5”
의신경망은숫자영상을분류합니다。
文件名=“digitsDAGnetwithnoise.h5”;lgraph=importKerasLayers(文件名,“ImportWeights”,真正的);
警告:无法导入一些Keras层,因为它们不被深度学习工具箱支持。万博1manbetx它们已经被占位符层所取代。要查找这些层,调用返回对象上的函数findPlaceholderLayers。
Keras신경망은深度学习工具箱에서지원하지않는몇몇계층을포함합니다。进口卡拉斯层
함수는 경고를 표시하고 지원되지 않는 계층을 자리 표시자 계층으로 바꿉니다.
情节
을사용하여계층그래프를플로팅합니다。
图绘制(lgraph)标题(“导入的网络”)
자리표시자계층을바꾸려면먼저바꾸려는계층의이름을식별하십시오。findPlaceholderLayers
를사용하여자리표시자계층을찾습니다。
placeholderLayers = findPlaceholderLayers (lgraph)
placeholderLayers = 2x1 PlaceholderLayer array with layers: 1' gaussian_noise_1' PLACEHOLDER LAYER PLACEHOLDER for 'GaussianNoise' Keras LAYER 2' gaussian_noise_2' PLACEHOLDER LAYER PLACEHOLDER for 'GaussianNoise' Keras LAYER
이러한계층의Keras구성을표시합니다。
placeholderLayers。KerasConfiguration
ans =结构体字段:可训练:1 name: 'gaussian_noise_1' stddev: 1.5000
ans =结构体字段:可训练:1 name: '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”,gn2);
情节
을사용하여업데이트된계층그래프를플로팅합니다。
图绘制(lgraph)标题(“替换图层的网络”)
가져온 분류 계층이 클래스를 포함하지 않는 경우, 예측을 실행하기 전에 먼저 클래스를 지정해야 합니다. 클래스를 지정하지 않으면 클래스가 자동으로1
,2
、……N
으로설정됩니다。여기서N
은 클래스의 개수입니다.
계층그래프의层
속성을확인하여분류계층의인덱스를찾습니다。
lgraph。层
ans=15x1带层的层阵列:1“输入1”图像输入28x28x1图像2“conv2d_1”卷积20 7x7x1带跨距的卷积[1]和填充“相同的”3“conv2d_1_relu”relu relu 4“conv2d_2”卷积20 3x3x1带跨距的卷积[1]和填充“相同的”5“conv2d_2_relu”relu relu 6“新的_高斯_噪声_1”高斯噪声标准偏差为1.5 7“新的_高斯_噪声_2”高斯噪声标准偏差为0.7 8“最大_池2d_1”最大池2x2最大池步幅[2]和填充“相同的”9“最大池2D_2”最大池2x2最大池带跨距[2 2]和填充“相同的”10“展平_1”Keras展平激活为1-D假设C样式(行主)顺序11“展平_2”Keras展平激活为1-D假设C样式(行主)顺序12“串联1”深度串联2个输入的深度串联13“密集1”完全连接10完全连接层14“激活1”Softmax Softmax 15“分类层激活1”分类输出交叉熵
분류 계층의 이름은“ClassificationLayer_activation_1”
입니다. 분류 계층을 표시하고类
속성을확인합니다。
粘土= lgraph.Layers(结束)
cLayer=ClassificationOutputLayer,属性:Name:'ClassificationLayer\u activation\u 1'类:'auto'类权重:'none'输出大小:'auto'超参数丢失函数:'crossentropyex'
계층의类
속성이“汽车”
이므로클래스를수동으로지정해야합니다。클래스를0
,1
、……9
로설정한다음가져온분류계층을새로운분류계층으로바꿉니다。
cLayer.Classes=string(0:9)
class: [0 1 2 3 4 5 6 7 8 9] ClassWeights: 'none' OutputSize: 10 Hyperparameters LossFunction: 'crossentropyex'
lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);
装配网络
를 사용하여 계층 그래프를 조합합니다. 함수가 예측을 실행할 준비가 된DAGNetwork
객체를반환합니다。
净= assembleNetwork (lgraph)
net = DAGNetwork with properties: Layers: [15x1 net.cnn.layer. layer] Connections: [15x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}
进口卡拉斯网络
|装配网络
|replaceLayer
|进口卡拉斯层
|trainNetwork
|分层图
|DAGNetwork
|findPlaceholderLayers