LRCN(1)

title: LRCN(1)
tag: 代码复现

这篇文章描述了如何复现《Long-term Recurrent Convolutional Networks for Visual Recognition and Description》这篇paper的动作识别的实验部分

这里是复现代码的指导原文链接
当然,重新复现别人的代码总会遇到各种各样的问题。我把他的代码使用过程翻译一遍,然后按照自己的复现过程整理各种各样的问题,供大家参考。

一、我的使用过程

1、从github上克隆整个仓库

打开命令行,输入

git clone https://github.com/LisaAnne/lisa-caffe-public.git

克隆完之后你会发现这个仓库跟caffe的文件夹结构一样,没错,这就是caffe,只不过是作者升级过的caffe,你会发现在example这个文件夹里多出了两个例子/LRCN_activity_recognition和LRCN_evaluate。当然还做了一些其他的修改,这就不细说了。所有关于action recognition的代码都在examples/LRCN_activity_recognition这个文件夹中。

2、重新编译caffe

我想大家已经编译过无数次caffe了,如果你已经安装过官网给的caffe,不用管它,这里还是要重新编译一遍。在重新编译之前,需要修改你的环境变量,即在~/.bashrc中把之前的PYTHON_PATH给注释掉,换成现在的这个文件夹路径
sudo gedit ~/.bashrc
比如我安装官网的caffe时加入了

# export PYTHONPATH=/home/lgy/software/caffe/python:$PYTHONPATH

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
好的,以下是一份可能的代码实现(仅供参考): ```python import numpy as np import tensorflow as tf from sklearn.preprocessing import MinMaxScaler from pyswarm import pso from lrcn import LRCN # LRCN是自己实现的LSTM+CNN模型 # 读取数据 data = np.loadtxt('data.txt', delimiter=',') X = data[:, :-1] y = data[:, -1] # 归一化 scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X) # 划分数据集 split_ratio = 0.8 split_index = int(split_ratio * len(X)) X_train, X_test = X_scaled[:split_index], X_scaled[split_index:] y_train, y_test = y[:split_index], y[split_index:] # 定义LSTM+CNN模型 model = LRCN(input_shape=(X.shape[1], 1)) model.compile(optimizer='adam', loss='mse') # 定义适应度函数 def fitness_function(params, X_train, y_train, X_test, y_test): # 解压参数 learning_rate, batch_size, num_epochs = params # 构建模型 model = LRCN(input_shape=(X_train.shape[1], 1)) optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate) model.compile(optimizer=optimizer, loss='mse') # 训练模型 model.fit(X_train, y_train, batch_size=batch_size, epochs=num_epochs) # 在测试集上计算预测误差 y_pred = model.predict(X_test) mse = np.mean((y_test - y_pred)**2) return mse # 定义参数空间 lb = [0.0001, 10, 10] # 最小学习率,最小批大小,最小迭代次数 ub = [0.01, 100, 100] # 最大学习率,最大批大小,最大迭代次数 # 使用粒子群算法寻找最优超参数 best_mse, best_params = pso(fitness_function, lb, ub, args=(X_train.reshape(-1, X_train.shape[1], 1), y_train, X_test.reshape(-1, X_test.shape[1], 1), y_test), swarmsize=10, maxiter=100) # 输出最优超参数 print("Best MSE:", best_mse) print("Best Params:", best_params) # 用最优超参数训练模型并预测身体寿命 learning_rate, batch_size, num_epochs = best_params optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate) model.compile(optimizer=optimizer, loss='mse') model.fit(X_scaled.reshape(-1, X.shape[1], 1), y, batch_size=batch_size, epochs=num_epochs) predicted_lifetimes = model.predict(X_scaled.reshape(-1, X.shape[1], 1)) ``` 其中,`data.txt`是包含电涌保护器数据的文本文件,每行是一个样本,最后一列是对应的身体寿命。`LRCN`是自己实现的LSTM+CNN模型,可以根据具体需求进行修改。`fitness_function`是适应度函数,用于计算在给定超参数下模型在测试集上的预测误差。`pso`是使用粒子群算法搜索最优超参数的函数,其中`swarmsize`和`maxiter`是粒子群算法的超参数,可以根据具体需求进行修改。最后,使用最优超参数训练模型并预测身体寿命。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值