Debug 路漫漫-09:构建CNN时维度不一致问题
Build CNN Network 之后,运行,但是报错:
ValueError: Input 0 is incompatible with layer predict_vector_conv1: expected ndim=3, found ndim=2
原因:
对于lexicographic,先element wise 点积(user*item),这样维度只能是2维的。而Convolutional操作和maxpooling 操作都需要3D,缺少的那一维好像没办法给出来。
<0723好傻好傻,点乘怎么会降维呢!!原来是我在merge点乘前面做了 Flatten操作,被自己蠢哭了5555>
那么,如何再增加一个维度呢??
即在CNN中,如果是对矩阵做操作的话(不是图像)。maxpooling需要3dim,而我的矩阵只有2dim,这种情况可操作吗?或者说有什么办法可以额外增加一个维度吗
法一:
【TensorFlow用expand_dim()来增加维度:https://blog.csdn.net/jasonzzj/article/details/60811035 】
one_img = tf.expand_dims(one_img, -1) #-1表示最后一维 ——好像可以解决问题。
底下的评论:
这里是维度上的1,理解成增加维度就够了,至于数值,其实本质是不影响的。着重理解:维度的增加。例如一个二维数据shape=(1,2),我们理解的是一行两列的数据,它所代表的是一个二维矩阵,如果shape=(3,2),其所代表的意义一样是一个二维矩阵,只是矩阵中的数据量变成了三行两列。而当我们使用这里的exped_dims(t,1)之后,那么原来的二维矩阵就变成了三维了,也就是shape=(1,1,2),第二个位置的1,可以将其理解为占位符,至于里面的数据量大小(是1或者2、3)其实并无太大意义,主要意义就是原来的数据,增加了一个维度。
——
但是会出现这个问题:
法二:
YS:可以用 reshape 。比如数据集是N张4096的图片,就可以把它 reshape 成 N*64*64*1的维度,就是后面再多个维度长度为1的一个维度。
法三:
Dr.PH: 2dim也是属于3dim一种,你把2dim转化成3dim。
XD:扩展一个维度为1就可以,对原来的数据量没有影响的,只是扩展一个维度,没有增加数据量呀。理论上扩展维度肯定是可以的,有报错的话应该是实现的问题。
最新文章
- OpenCV人脸识别Eigen算法源码分析
- Linux:使用nohup让进程在后台可靠运行
- stringstream的用法【转】
- VirtualBox 使用技巧
- LeetCode 274
- SGU 134 Centroid
- 由sqlite在手机的内存位置,引起onCreate当运行总结
- 使用C#在VS中开发:未处理AccessViolationException “System.AccessViolationException”类型的未经处理的异常
- MVC查询数据接收及校验
- Ubuntu18下sudo apt install xxx出现问题
- Problem B: 平面上的点和线——Point类、Line类 (II)
- ReactNative学习笔记(六)集成视频播放
- [书摘]图解HTTP 状态码
- html-文件上传设置accept类型延时问题
- js传入和传出参数乱码
- Python爬虫个人记录(四)利用Python在豆瓣上写一篇日记
- TCP并发server模型(三)
- HR面 - 十大经典提问
- Your branch is ahead of &#39;origin/master&#39; by 1 commit.
- 使用docker的kms服务器激活office2016专业增强版