神经网络concat(如何用caffe解决回归问题)

:暂无数据 2025-08-21 01:40:03 0
大家好,神经网络concat相信很多的网友都不是很明白,包括如何用caffe解决回归问题也是一样,不过没有关系,接下来就来为大家分享关于神经网络concat和如何用caffe解决回归问题的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

如何用caffe解决回归问题

如何在Caffe中配置每一个层的结构最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结。1.VisionLayers1.1卷积层(Convolution)类型:CONVOLUTION例子layers{name:"conv1"type:CONVOLUTIONbottom:"data"top:"conv1"blobs_lr:1#learningratemultiplierforthefilter**lobs_lr:2#learningratemultiplierforthebiasesweight_decay:1#weightdecaymultiplierforthefiltersweight_decay:0#weightdecaymultiplierforthebiasesconvolution_param{num_output:96#learn96filterskernel_size:11#eachfilteris11x11stride:4#step4pixel**etweeneachfilterapplicationweight_filler{type:"gaussian"#initializethefiltersfromaGaussianstd:0.01#distributionwithstdev0.01(defaultmean:0)}bias_filler{type:"c***tant"#initializethebiasestozero(0)value:0}}}blobs_lr:学习率调整的参数,在上面的例子中设置权重学习率和运行中求解器给出的学习率一样,同时是偏置学习率为权重的两倍。weight_decay:卷积层的重要参数必须参数:num_output(c_o):过滤器的个数kernel_size(orkernel_handkernel_w):过滤器的大小可选参数:weight_filler:0代表链接num,1代表链接channels通过全连接层后的大小变化:输入:从1到K的每一个blob的大小n_i*c_i*h*w输出:如果concat_dim=0:(n_1+n_2++n_K)*c_1*h*w,需要保证所有输入的c_i相同。如果concat_dim=1:n_1*(c_1+c_2++c_K)*h*w,需要保证所有输入的n_i相同。通过Concatenation层,可以把多个的blobs链接成一个blob。5.5SlicingTheSLICElayerisautilitylayerthatslicesaninputlayertomultipleoutputlayersalongagivendimension(currentlynumorchannelonly)withgivensliceindices.5.6ElementwiseOperati***类型:ELTWISE5.7Argmax类型:ARGMAX5.8Softmax类型:SOFTMAX5.9Mean-VarianceNormalization类型:MVN6.参考Caffe

神经网络算法的必要性

这里的distinct表示去重,也可以用group by实现, 两者的区别在于distinct会读取所有的记录,而group by是在分组之后每组只返回一条记录,也就是说后者读取的条数要少很多,效率会更高一些,因此可以将上述代码改为:
create table validate_set as
select
user_id,
wm_concat(’,’,brand_id) as brand
from(
select user_id,brand_id
from t_alibaba_bigdata_user_brand_total_1
where type = ’1’ and visit_datetime 》 ’07-15’
group by user_id,brand_id
)a
group by user_id;
训练集和测试集建立好之后,我们可以通过以下命令来计算测试集的推荐数目:
select sum(regexp_count(brand,’,’)+1) from t_tmall_add_user_brand_predict_dh;
其中REGEXP_COUNT是ODPS的一个自建函数,它的用法如下:
bigint regexp_count(string source, string pattern)
表示计算 source 中从 start_position 开始,匹配指定模式pattern 的子串的次数。比如我们有一条输出结果是:100 1,2,3,4,通过计算其中的,数(3)+1=4就计算出推荐的个数了。
UDF计算重复条数
UDF(User-Defined Function)(用户定义函数),是用户根据实际应用的需要而自行开发的函数。在 Eclipse 中的项目下新建 UDF。填入 Package 名称为:chanvee.udf,和 UDF 类名:CountHits,点击确认。插件会自动帮我们生成chanvee.udf包用于写 UDF 代码,和test.chanvee.udf包用于本地测试。
CountHits.java文件,注意下文的Long不能替换为long类型,否则在ODPS上运行会报Method Not Found错误:
package chanvee.udf
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class CountHits extends UDF {
public Long evaluate (String a,String b){
if(a == null || b == null) {
return 0L; //异常值
}
Set《String》 set1 = new HashSet《String》();
Set《String》 set2 = new HashSet《String》();
set1.addAll(Arrays.asList(a.split(",")));
set2.addAll(Arrays.asList(b.split(",")));
Long hits = 0L;
for(String s : set2){
if( set1.contains(s) )
hits++;
}
return hits;
}
}
本段函数的主要工作是在a串和b串去重后,计算它们中重复元素的个数。接下来在本地测试下 UDF 。在test.jark.udf包中有两个文件TestCountHits.java和TestUDFBase.java。由于如果 UDF 的输入参数是多个的话,本地测试默认的分隔符是逗号,与我们brand中的逗号冲突了。所以修改下TestUDFBase.java文件的第15行的分隔符为空格(当然也可以其他符号):
private final static String ODPS_SEPARATOR = " ";
同时修改第72行,去掉(String),原因是Long型不能强制转换成String:
return callMeth.invoke(UDFClass, input_parameter.toArray()) + "\n";
在TestCountHits.in文件中输入测试样例:
123456,444,555,666 123456,666,777,888
888,999 111,222
111,111,222,222 111,222,222,333
运行TestCountHits.java后,在TestCountHits.out文件中得到测试结果(样例):
2
0
2
在确认 UDF 没有问题后,准备上传。将Package chanvee.udf打成 jar 包,命名为chanvee_udf.jar,置于C:/TOOLS下,执行以下命令:
create resource jar C:/TOOLS/chanvee_udf.jar
create function count_hits chanvee.udf.CountHits jark-udf.jar
上述命令作用分别是将用户 jar 包上传到 ODPS 和在 ODPS 上注册函数并命名为count_hits。现在使用ls functi***命令就能看到我们刚刚注册的函数了。
现在,我们就能像调用一般内建函数一样调用我们自己的count_hits函数了。计算推荐集和验证集中的重复条数,有下面代码:
select sum(count_hits(a.brand,b.brand)) hits from t_tmall_add_user_brand_predict_dh a
join validate_set b on a.user_id = b.user_id;
上面演示了一般 UDF 的创建使用过程,其他类似的 UDF 都可以参考以上过程构建。UDF 是 **L 的一大工具 ,很多规则算法都可以用过 UDF 方便地实现。
计算评估值
我们知道准确率的计算公式:precision=hitspnums, 其中 pnum 代表推荐的条数。
召回率的计算公式:recall=hitsrnums, 其中 rnum 为验证的条数。
F1:
F1=2∗hitspnum+rnum
为了计算方便,我们用full outer join连接验证集和推荐集,并将计算出的 hits、pnums、rnums 放到临时表里:
select sum(count_hits(p.brand,r.brand) hits,
sum(regexp_count(p.brand,’,’)+1) pnums,
sum(regexp_count(r.brand,’,’)+1) rnums
from t_tmall_add_user_brand_predict_dh p
full outer join validate_set r on p.user_id = r.user_id
有了这三个值后,就可以用上面的公式轻松计算出评测值了。
select (hits/pnums) precision, (hits/rnums) recall,(2*hits/(pnums+rnums)) F1
from (
select hits , pnums , rnums
from ...
)a;
综合一下,有如下代码:
create table evaluation as
select (hits/pnums) precision , (hits/rnums) recall , (2*hits/(pnums+rnums)) F1 ,
hits , pnums , rnums , getdate() eval_time
from (
select sum(count_hits(p.brand,v.brand) hits,
sum(regexp_count(p.brand,’,’)+1) pnums,
sum(regexp_count(v.brand,’,’)+1) rnums
from t_tmall_add_user_brand_predict_dh p
full outer join validate_set r on p.user_id = r.user_id
)a;
我们将评测值写到了evaluation表中,可供组员查看分析。运行一次上面代码后,若以后再进行评测,可以将第一行改成insert into/overwrite table evaluation后直接运行,这样可以与上次的结果进行比较。
现在已有的模型算法就可以在本地测试调优后,再上传到线上进行评估了。

为什么接入本地融合网神经就出问题

本人深度学习小白,想用matlab做两组传感器数据的神经网络特征融合,不知道我的想法对不对,我在工具箱里这么编写了一个基于AlexNet的神经网络模型,两组数据经过相同的卷积层,再通过一个additionLayer连接层绑两组数据连接起来,再通过三个全连接层,最后输出三个分类。
代码是通过深度学习工具箱生成的,如下
lgraph = layerGraph();
tempLayers = [
imageInputLayer(,"Name","data1")
convolution2dLayer()
reluLayer("Name","relu1_1")
crossChannelNormalizationLayer(5,"Name","norm1_1","K",1)
maxPooling2dLayer()
groupedConvolution2dLayer()
reluLayer("Name","relu1_2")
crossChannelNormalizationLayer(5,"Name","norm1_2","K",1)
maxPooling2dLayer()
convolution2dLayer()
reluLayer("Name","relu1_3")
groupedConvolution2dLayer()
reluLayer("Name","relu1_4")
groupedConvolution2dLayer()
reluLayer("Name","relu1_5")
maxPooling2dLayer(;
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
imageInputLayer(,"Name","data2")
convolution2dLayer()
reluLayer("Name","relu2_1")
crossChannelNormalizationLayer(5,"Name","norm2_1","K",1)
maxPooling2dLayer()
groupedConvolution2dLayer()
reluLayer("Name","relu2_2")
crossChannelNormalizationLayer(5,"Name","norm2_2","K",1)
maxPooling2dLayer()
convolution2dLayer()
reluLayer("Name","relu2_3")
groupedConvolution2dLayer()
reluLayer("Name","relu2_4")
groupedConvolution2dLayer()
reluLayer("Name","relu2_5")
maxPooling2dLayer(;
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
additionLayer(2,"Name","addition")
fullyConnectedLayer(4096,"Name","fc6","BiasLearnRateFactor",2)
reluLayer("Name","relu6")
dropoutLayer(0.5,"Name","drop6")
fullyConnectedLayer(4096,"Name","fc7","BiasLearnRateFactor",2)
reluLayer("Name","relu7")
dropoutLayer(0.5,"Name","drop7")
fullyConnectedLayer(3,"Name","fc8","BiasLearnRateFactor",2)
softmaxLayer("Name","prob")
classificationLayer("Name","classoutput")];
lgraph = addLayers(lgraph,tempLayers);
% 清理辅助变量
clear tempLayers;
lgraph = connectLayers(lgraph,"pool1_5","addition/in1");
lgraph = connectLayers(lgraph,"pool2_5","addition/in2");
figure
plot(lgraph);
layers = lgraph.Layers;
复制
画出来的图如下
输入图片读取处理的代码如下
%% 训练数据存储;
allImages1 = imageDatastore("E:\Data\old-new\CWT\1\",...
’IncludeSubfolders’,true,...
’LabelSource’,’foldernames’);
allImages2= imageDatastore("E:\Data\old-new\CWT\2\",...
’IncludeSubfolders’,true,...
’LabelSource’,’foldernames’);
%% 数据处理;
rng default
= splitEachLabel(allImages1,0.8,’randomized’);%按比例拆分 ImageDatastore 标签
disp();
disp();
= splitEachLabel(allImages2,0.8,’randomized’);%按比例拆分 ImageDatastore 标签
disp();
disp();
%% 处理输入的图片;
inputSize = layers(1).InputSize;
augimgsTrain1 = augmentedImageDatastore(inputSize(1:2),imgsTrain1); % 调整图像大小以匹配网络输入层
augimgsValidation1 = augmentedImageDatastore(inputSize(1:2),imgsValidation1);
augimgsTrain2 = augmentedImageDatastore(inputSize(1:2),imgsTrain2); % 调整图像大小以匹配网络输入层
augimgsValidation2 = augmentedImageDatastore(inputSize(1:2),imgsValidation2);
augimgsTrain = combine(augimgsTrain1,augimgsTrain2);
% augimgsValidation = combine(augimgsValidation1,augimgsValidation2);
复制
但是训练时会一直报错,ValidationData设置为空因为我不知道怎么把augimgsValidation1 augimgsValidation2两个结构体的验证集放到一块,‘opts =’ 这行会报错误,所以上面也就注掉了
训练的代码如下
%% 设置参数进行训练
rng default
mbSize = 40;
mxEpochs = 40;
ilr = 1e-4;
plt = ’training-progress’;
opts = trainingOpti***(’sgdm’,...
’InitialLearnRate’,ilr, ...
’MaxEpochs’,mxEpochs ,...
’MiniBatchSize’,mbSize, ...
’ValidationData’,,...
’ExecutionEnvironment’,’multi-gpu’,...
’Plots’,plt);
= trainNetwork(augimgsTrain,layers,opts);
复制
报的错误如下图
有没有会用matlab做深度学习的大佬,帮我看看这个,万分感谢!

深度学习
matlab
神经网络
机器学习
迁移学习
一分钟了解直流变频空调
精选推荐
广告
mcca特征融合matlab代码
78下载·0评论
2019年1月26日
【火灾检测】基于matlab连通区域+SVM特征融合火灾检测【含Matlab源码 1223期】
1498阅读·3评论·7点赞
2021年8月17日
总结与归纳:深度神经网络中的数据融合方法
8124阅读·4评论·51点赞
2020年4月9日
基于SIFT特征的图像拼接融合(matlab+vlfeat实现)
1.2W阅读·6评论·4点赞
2019年4月27日
分类预测 | MATLAB实现CNN卷积神经网络多特征分类预测
1313阅读·0评论·1点赞
2022年9月7日
MATLAB中深度学习的多级神经网络构建
1349阅读·0评论·1点赞
2021年12月17日
灭菌器供应厂家
精选推荐
广告
(Note)神经网络中的特征融合方式(add/concate)
1733阅读·0评论·1点赞
2022年7月19日
在 Matlab 中连接不同大小的数组:此函数允许您连接不同大小的数组,并在需要时使用 NaN 填充。-matlab开发
22下载·0评论
2021年6月1日
【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent
3883阅读·8评论·4点赞
2021年11月15日
python将大量图片拼接千面图_11. 图像合成与图像融合
426阅读·0评论·1点赞
2020年12月10日
图像融合方法
3098阅读·1评论·3点赞
2020年11月11日
MATLAB的图像融合设计
1004阅读·1评论·1点赞
2021年8月30日
matlab图像融合sift,基于SIFT特征的图像拼接融合(matlab+vlfeat实现)
403阅读·0评论·0点赞
2021年4月24日
【matlab】机器学习与人工智能期末课设,基于融合特征的以图搜图应用
209阅读·0评论·1点赞
2022年6月1日
回归预测 | MATLAB实现CNN-GRU(卷积门控循环单元)多输入单输出
2884阅读·1评论·0点赞
2022年4月13日
Matlab之深度学习工作流程
1521阅读·0评论·3点赞
2020年9月29日
Matlab实现CCA多模特征融合
2752阅读·8评论·3点赞
2020年12月30日
Matlab深度学习上手初探
3976阅读·0评论·1点赞
2022年4月10日
(多模态 / **度)特征融合
1.4W阅读·0评论·16点赞
2020年12月2日
去首页
看看更多热门内容
评论4
m0_62482485

兄嘚,这个问题解决了么?
2022.10.24
m0_62482485

兄嘚,这个问题解决了么?
2022.10.24
程序猿_悟空

呵呵

以上就是我们为大家找到的有关“神经网络concat(如何用caffe解决回归问题)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。
本文编辑:admin

更多文章:


java静态数组初始化(java 数组 静态和动态初始化的区别)

java静态数组初始化(java 数组 静态和动态初始化的区别)

今天给各位分享java 数组 静态和动态初始化的区别的知识,其中也会对java 数组 静态和动态初始化的区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

js打开本地html(怎么用js打开本地网页)

js打开本地html(怎么用js打开本地网页)

大家好,今天小编来为大家解答以下的问题,关于js打开本地html,怎么用js打开本地网页这个很多人还不知道,现在让我们一起来看看吧!

java线程池七大参数(Java线程池几个参数)

java线程池七大参数(Java线程池几个参数)

大家好,关于java线程池七大参数很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Java线程池几个参数的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

随机生成正负1函数(excel随机函数,生成-1到1之间,不为0的保留两位位小数)

随机生成正负1函数(excel随机函数,生成-1到1之间,不为0的保留两位位小数)

大家好,今天小编来为大家解答以下的问题,关于随机生成正负1函数,excel随机函数,生成-1到1之间,不为0的保留两位位小数这个很多人还不知道,现在让我们一起来看看吧!

antd select(在使用antd遇到的不常见问题(一))

antd select(在使用antd遇到的不常见问题(一))

今天给各位分享在使用antd遇到的不常见问题(一)的知识,其中也会对在使用antd遇到的不常见问题(一)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

神经网络concat(如何用caffe解决回归问题)

神经网络concat(如何用caffe解决回归问题)

大家好,神经网络concat相信很多的网友都不是很明白,包括如何用caffe解决回归问题也是一样,不过没有关系,接下来就来为大家分享关于神经网络concat和如何用caffe解决回归问题的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

linux搭建python环境(如何在Linux下的sublime text 2搭建python开发IDE)

linux搭建python环境(如何在Linux下的sublime text 2搭建python开发IDE)

大家好,关于linux搭建python环境很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何在Linux下的sublime text 2搭建python开发IDE的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以

帝国时代为什么花屏?exagear玩帝国2程序错误

帝国时代为什么花屏?exagear玩帝国2程序错误

大家好,今天小编来为大家解答以下的问题,关于帝国程序,帝国时代为什么花屏这个很多人还不知道,现在让我们一起来看看吧!

strcpy a b 什么意思(c语言中strcpy,strcat什么意思)

strcpy a b 什么意思(c语言中strcpy,strcat什么意思)

今天给各位分享c语言中strcpy,strcat什么意思的知识,其中也会对c语言中strcpy,strcat什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

script defer(JS异步加载的几种方式)

script defer(JS异步加载的几种方式)

大家好,今天小编来为大家解答以下的问题,关于script defer,JS异步加载的几种方式这个很多人还不知道,现在让我们一起来看看吧!

最近更新

电信在线测速(如何测试电信网速)
2025-08-21 04:00:03 浏览:0
business(business的意思)
2025-08-21 03:00:05 浏览:0
热门文章

口语100下载(口语100电脑版怎样下载)
2025-06-27 09:00:02 浏览:10
premiere pro怎么读(premiere怎么读)
2025-06-27 05:00:01 浏览:9
标签列表