使用matlab写一段gru代码示例
时间: 2023-10-31 18:51:32 浏览: 28
以下是一个简单的GRU代码示例:
% 输入数据
input_data = rand(3, 1); % 长度为3的输入向量
% 初始化权重和偏置
W_z = rand(2, 3); % z门的权重
U_z = rand(2, 2); % z门的循环权重
b_z = rand(2, 1); % z门的偏置
W_r = rand(2, 3); % r门的权重
U_r = rand(2, 2); % r门的循环权重
b_r = rand(2, 1); % r门的偏置
W_h = rand(2, 3); % 隐藏状态的权重
U_h = rand(2, 2); % 隐藏状态的循环权重
b_h = rand(2, 1); % 隐藏状态的偏置
% 初始化隐藏状态
h_t = zeros(2, 1);
% 循环计算
for t = 1:length(input_data)
x_t = input_data(t);
% 计算z门
z_t = sigmoid(W_z * x_t + U_z * h_t + b_z);
% 计算r门
r_t = sigmoid(W_r * x_t + U_r * h_t + b_r);
% 计算候选隐藏状态
h_tilde_t = tanh(W_h * x_t + U_h * (r_t .* h_t) + b_h);
% 更新隐藏状态
h_t = (1 - z_t) .* h_t + z_t .* h_tilde_t;
end
% sigmoid函数
function y = sigmoid(x)
y = 1 ./ (1 + exp(-x));
end
% tanh函数
function y = tanh(x)
y = (exp(x) - exp(-x)) ./ (exp(x) + exp(-x));
end