深度学习MATLAB代码
时间: 2023-08-24 11:09:52 浏览: 60
以下是一个简单的神经网络模型的 MATLAB 代码:
```
% 定义输入输出
X = [0 0 1; 0 1 1; 1 0 1; 1 1 1];
Y = [0; 1; 1; 0];
% 定义模型参数
input_layer_size = 3;
hidden_layer_size = 4;
output_layer_size = 1;
epsilon_init = 0.12;
% 初始化权重矩阵
W1 = rand(hidden_layer_size, input_layer_size+1) * 2 * epsilon_init - epsilon_init;
W2 = rand(output_layer_size, hidden_layer_size+1) * 2 * epsilon_init - epsilon_init;
% 迭代训练
num_iterations = 5000;
alpha = 0.01;
for i = 1:num_iterations
% 前向传播
a1 = [ones(size(X,1),1) X];
z2 = a1 * W1';
a2 = [ones(size(z2,1),1) sigmoid(z2)];
z3 = a2 * W2';
h = sigmoid(z3);
% 计算代价函数
J = (-1/size(X,1)) * sum(Y .* log(h) + (1-Y) .* log(1-h));
% 反向传播
delta3 = h - Y;
delta2 = (delta3 * W2) .* sigmoidGradient([ones(size(z2,1),1) z2]);
delta2 = delta2(:,2:end);
% 更新权重矩阵
Delta1 = delta2' * a1;
Delta2 = delta3' * a2;
W1 = W1 - (alpha * (1/size(X,1)) * Delta1);
W2 = W2 - (alpha * (1/size(X,1)) * Delta2);
end
% 预测结果
a1 = [ones(size(X,1),1) X];
z2 = a1 * W1';
a2 = [ones(size(z2,1),1) sigmoid(z2)];
z3 = a2 * W2';
h = sigmoid(z3);
% 输出预测结果
disp(h);
```
注意:该代码仅作为示例,实际应用中需要根据具体问题进行调整和优化。