首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >正在尝试创建GAN: InvalidArgumentError:矩阵大小不兼容

正在尝试创建GAN: InvalidArgumentError:矩阵大小不兼容
EN

Stack Overflow用户
提问于 2019-06-15 21:12:20
回答 1查看 576关注 0票数 1

我是这个领域的新手,但我正在尝试创建一个生成对抗网络来生成音乐。我有一个模型,它是生成器和鉴别器的组合,但当我训练它时,它给了我一个错误。一些它不喜欢的输出。我使用的是Keras序列。任何帮助都将不胜感激。

据我所知,在任何Keras模型中,输入和输出都应该具有相同的维度。我的输入形状- (300,30,1)。输出形状- (300,1)。当我单独训练它们时,它们不会导致错误。但是当我将它们组合到一个单独的模型中时,它们开始给出一个错误--特别是在鉴别器的最后一行-> Dense(1, activation='sigmoid')

代码语言:javascript
运行
AI代码解释
复制
    def __generator(self):
        """ Declare generator """
        model = Sequential()
        model.add(LSTM(256, input_shape=(self.n_prev, 1), return_sequences=True))
        model.add(Dropout(0.6))
        model.add(LSTM(128, input_shape=(self.n_prev, 1), return_sequences=True))
        model.add(Dropout(0.6))
        model.add(LSTM(64, input_shape=(self.n_prev, 1), return_sequences=False))
        model.add(Dropout(0.6))
        model.add(Dense(1))

        print(model.summary())
        return model


    def __discriminator1b (self, width=300, height=30, channels=1):

        shape = (width, height, channels)
        model = Sequential()
        model.add(Flatten(input_shape=((30, 1))))
        model.add(Dense((height * channels), input_shape=(30, 1)))
        model.add(LeakyReLU(alpha=0.2))
        model.add(Dense(np.int64((height * channels)/2)))
        model.add(LeakyReLU(alpha=0.2))

        model.add(Dense(1, activation='sigmoid'))   

        print(model.summary())
        return model


    def __gen_disc (self):
        model = Sequential()
        model.add(self.G)
        model.add(self.D)

        return model
代码语言:javascript
运行
AI代码解释
复制
Training:
self.G.train_on_batch(np.array(gen_noiseX), np.array(genY))
self.D.train_on_batch(np.array(gen_noiseX), disc_label)
self.GD.train_on_batch(np.array(gen_noiseX), y_mislabled)

Model Summaries:
Generator:
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_28 (LSTM)               (None, 30, 256)           264192    
_________________________________________________________________
dropout_52 (Dropout)         (None, 30, 256)           0         
_________________________________________________________________
lstm_29 (LSTM)               (None, 30, 128)           197120    
_________________________________________________________________
dropout_53 (Dropout)         (None, 30, 128)           0         
_________________________________________________________________
lstm_30 (LSTM)               (None, 64)                49408     
_________________________________________________________________
dropout_54 (Dropout)         (None, 64)                0         
_________________________________________________________________
dense_36 (Dense)             (None, 1)                 65        
=================================================================
Total params: 510,785
Trainable params: 510,785
Non-trainable params: 0
_________________________________________________________________
None


Discriminator:

Layer (type)                 Output Shape              Param #   
=================================================================
flatten_8 (Flatten)          (None, 30)                0         
_________________________________________________________________
dense_37 (Dense)             (None, 30)                930       
_________________________________________________________________
leaky_re_lu_15 (LeakyReLU)   (None, 30)                0         
_________________________________________________________________
dense_38 (Dense)             (None, 15)                465       
_________________________________________________________________
leaky_re_lu_16 (LeakyReLU)   (None, 15)                0         
_________________________________________________________________
dense_39 (Dense)             (None, 1)                 16        
=================================================================
Total params: 1,411
Trainable params: 1,411
Non-trainable params: 0
_________________________________________________________________
None

所以错误本身就是

代码语言:javascript
运行
AI代码解释
复制
InvalidArgumentError: Matrix size-incompatible: In[0]: [300,1], In[1]: [30,30]   [[{{node sequential_22/dense_37/MatMul}}]]

每当我移除鉴别器的致密(1,sigmoid)层时,它就会起作用,但我需要这一层来进行二进制分类。也许我需要重建模型,或者只是做一个小的修复,但不管怎样,所有的建议都是值得感谢的。

EN

回答 1

Stack Overflow用户

发布于 2019-06-16 01:22:26

欢迎来到stackoverflow。出现此错误是因为,your model needs (30,30) but you are feeding it (300,1)

这里有几个更好的改变:

鉴别器model.add(Flatten(input_shape=((30, 1))))中的

  1. 在错误的位置。它应该在dense层之前。或者,当您构建bidirectional LSTMs.
  2. In生成器时,我认为您不需要Flatten层。

整个网络还需要做一些其他更改,您可以看到这个great article for music generation。希望这能有所帮助!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56614214

复制
相关文章
用 Cyberduck下载 / 上传 Google Drive 大文件
用Google Colab训练模型时,可以将训练好的权重模型存储到Google Drive上,很方便。但是,将模型权重下载下来就特别麻烦。另外,上传bert模型和数据集也特别困难。尝试了一些方法,最好的方法是使用Cyberduck(就是下面这个鸭子),传输稳定,并且可以断点续传。
SeanCheney
2020/05/09
4.1K0
用 Cyberduck下载 / 上传 Google Drive 大文件
文件上传和下载
​ encType=multipart/form-data 表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼 接,然后以二进制流的形式发送给服务器。
上分如喝水
2021/08/16
1.2K0
文件上传和下载
文件上传和下载
进行javaWeb项目的开发,文件上传和下载还是被比较普遍的使用到一种技术,之前都是使用专用的文件服务器进行文件的存储,今天要介绍的是基于mongodb数据库进行文件的存储。
码农王同学
2020/03/25
1.1K0
文件上传和下载
文件上传和下载是JAVA WEB中常见的一种操作,文件上传主要是将文件通过IO流传输到服务器的某一个特定的文件夹下;刚开始工作那会一个上传文件常常花费小半天的时间。自从有了springboot之后,简单到小学生都会的操作。废话不说,直接开始。
用户3467126
2019/07/03
1.1K0
文件上传和下载
文件上传要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data"
用户9615083
2022/12/25
1.1K0
文件上传和下载
JAVA 文件上传 和 下载
文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。
叫我阿杰好了
2022/11/07
2K0
JAVA 文件上传 和 下载
内网安全-上传和下载
利用FTP协议上传文件sudo apt-get install vsftpd -ysudo mkdir /ftp && cd /ftp && mkdir uploadfilesudo chmod 777 -R /ftp/uploadfilevim /etc/vsftpd.conf anonymous_enable=YESanon_root=/ftp/uploadfileno_anon_password=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_w
浪子云
2022/07/18
4310
SpringMVC:文件上传和下载
一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析原始的HTTP响应。在2003年,Apache Software Foundation发布了开源的Commons FileUpload组件,其很快成为Servlet/JSP程序员上传文件的最佳选择。
冷环渊
2021/11/17
5700
SpringMVC:文件上传和下载
ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文
愷龍
2023/02/27
7030
文件的上传和下载
文件的上传和下载,是非常常见的功能,在很多的系统中,或者软件中都经常使用文件的上传和下载。 比如:QQ头像,就使用了上传 邮箱中也有附件的上传和下载的功能
技术交流
2022/11/18
1.3K0
文件的上传和下载
Google Earth Engine(GEE)——显示和下载影像出现的问题
当我们下载或者展示影像的时候会出现错误,本文主要解决两个问题,第一个就是解决影像展示的问题,展示如果不能正常显示影像的RGB影像,一般情况下主要出现的问题就在于最大值和最小值的设定,如果你不知道该如何设置,就直接去掉min和max的设置。这样也能正常显示,
此星光明
2024/02/02
4890
Google Earth Engine(GEE)——显示和下载影像出现的问题
解决Rclone挂载Google Drive时上传失败和内存占用高等问题
说明:之前看到有些人评论使用Rclone挂载Gdrive时,会出现部分文件上传失败和挂载崩掉等问题,后者在挂载OneDrive时也会出现,所以这里就专门花了点时间测试了下这些问题,然后就水个解决方法。一般挂载Gdrive的时候,默认是使用的官方提供的api,所以高峰期上传文件的时候,由于很多人在用,导致api的流量上限,会出现各种403,ratelimit等错误,最常见的报错提示为:Failed to get file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded,然后目前的解决方法就是使用自己的api。至于挂载崩掉的问题是可以通过调整部分参数来解决,这里就都一起说下。
子润先生
2021/06/01
5.9K0
vue文件上传和下载_vue上传文件组件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170641.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
2.4K0
基于SpringMVC的上传和下载
注意:form的一个属性值     enctype="multipart/form-data"
CBeann
2023/12/25
1370
基于SpringMVC的上传和下载
python对接oss上传和下载
https://help.aliyun.com/document_detail/85288.html
阿超
2022/08/21
6.2K0
文件上传和下载(Linux系统)
在xshell中进入到文件存放的目录下后,使用sz +传输的文件名,然后回车,就可以把文件传输到本地电脑了
逸轩
2021/09/13
18.3K0
SpringMVC:commons文件上传和下载
一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析原始的HTTP响应。在2003年,Apache Software Foundation发布了开源的Commons FileUpload组件,其很快成为Servlet/JSP程序员上传文件的最佳选择。
冷环渊
2021/10/19
6560
大文件的上传和下载
文件小的时候,客户端和服务端之间的文件传输。很难感知出问题来。如果文件比较大了,不管是从服务器下载文件还是往服务器上传文件都是一个问题。这里插入一个分治思维、大文件的上传和下载能很好的体现该思维。如果一个问题比较难,我们可以不断的拆解成很多个子问题,不断拆开直到我们能解子问题。当我们把多个子问题解决完的时候,距离目标已经很近了。(拆分和聚合)
猿哥
2019/04/24
3.8K0
nginx实现文件上传和下载
这篇文章给大家分享的是nginx实现文件上传和下载的方法。小编觉得挺实用的,因此分享给大家学习。如下资料是关于实现文件上传和下载的方法的内步骤。
子润先生
2021/08/03
11K0
【不用框架】文件上传和下载
什么是文件上传? 文件上传就是把用户的信息保存起来。 为什么需要文件上传? 在用户注册的时候,可能需要用户提交照片。那么这张照片就应该要进行保存。 上传组件(工具) 为什么我们要使用上传工具? 为啥我们需要上传组件呢?当我们要获取客户端的数据,我们一般是通过getParameter()方法来获取的。 上传文件数据是经过MIME协议进行分割的,表单进行了二进制封装。也就是说:getParameter()无法获取得到上传文件的数据。 我们首先来看看文件上传http是怎么把数据带过去的 jsp页面,表单一定要指定
Java3y
2018/03/15
1.7K0
【不用框架】文件上传和下载

相似问题

下载和上传速度

30

测量下载、上传和Ping

10

SFTP文件下载和上传权限

10

WireGuard:限制下载和上传带宽

10

使用Iperf3测试上传和下载

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文