首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >要重塑形状的输入是带有“batch_size”值的张量,但所请求的形状需要“n_features”的倍数。

要重塑形状的输入是带有“batch_size”值的张量,但所请求的形状需要“n_features”的倍数。
EN

Stack Overflow用户
提问于 2019-09-26 11:51:03
回答 1查看 800关注 0票数 0

我试图建立自己的注意力模型,并在这里找到了示例代码:https://www.kaggle.com/takuok/bidirectional-lstm-and-attention-lb-0-043

当我不加修改地运行它的时候,它工作得很好。

但是我自己的数据只包含数值,我不得不更改示例代码。

所以我在示例代码中删除嵌入部分,再加上,这是我修复的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xtr = np.reshape(xtr, (xtr.shape[0], 1, xtr.shape[1])) 
# xtr.shape() = (n_sample_train, 1, 150), y.shape() = (n_sample_train, 6)
xte = np.reshape(xte, (xte.shape[0], 1, xte.shape[1]))
# xtr.shape() = (n_sample_test, 1, 150)

model = BidLstm(maxlen, max_features)
model.compile(loss='binary_crossentropy', optimizer='adam',
              metrics=['accuracy'])

我的BidLstm功能看起来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def BidLstm(maxlen, max_features):
    inp = Input(shape=(1,150))
    #x = Embedding(max_features, embed_size, weights=[embedding_matrix], trainable=False)(inp) -> I don't need embedding since my own data is numeric.
    x = Bidirectional(LSTM(300, return_sequences=True, dropout=0.25,
                           recurrent_dropout=0.25))(inp)
    x = Attention(maxlen)(x)
    x = Dense(256, activation="relu")(x)
    x = Dropout(0.25)(x)
    x = Dense(6, activation="sigmoid")(x)
    model = Model(inputs=inp, outputs=x)

    return model

上面写着,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InvalidArgumentErrorTraceback (most recent call last)
<ipython-input-62-929955370368> in <module>
     29 
     30     early = EarlyStopping(monitor="val_loss", mode="min", patience=1)
---> 31     model.fit(xtr, y, batch_size=128, epochs=15, validation_split=0.1, callbacks=[early])
     32     #model.fit(xtr, y, batch_size=256, epochs=1, validation_split=0.1)
     33 

/usr/local/lib/python3.5/dist-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)
   1037                                         initial_epoch=initial_epoch,
   1038                                         steps_per_epoch=steps_per_epoch,
-> 1039                                         validation_steps=validation_steps)
   1040 
   1041     def evaluate(self, x=None, y=None,

/usr/local/lib/python3.5/dist-packages/keras/engine/training_arrays.py in fit_loop(model, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)
    197                     ins_batch[i] = ins_batch[i].toarray()
    198 
--> 199                 outs = f(ins_batch)
    200                 outs = to_list(outs)
    201                 for l, o in zip(out_labels, outs):

/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py in __call__(self, inputs)
   2713                 return self._legacy_call(inputs)
   2714 
-> 2715             return self._call(inputs)
   2716         else:
   2717             if py_any(is_tensor(x) for x in inputs):

/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py in _call(self, inputs)
   2673             fetched = self._callable_fn(*array_vals, run_metadata=self.run_metadata)
   2674         else:
-> 2675             fetched = self._callable_fn(*array_vals)
   2676         return fetched[:len(self.outputs)]
   2677 

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in __call__(self, *args, **kwargs)
   1437           ret = tf_session.TF_SessionRunCallable(
   1438               self._session._session, self._handle, args, status,
-> 1439               run_metadata_ptr)
   1440         if run_metadata:
   1441           proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg)
    526             None, None,
    527             compat.as_text(c_api.TF_Message(self.status.status)),
--> 528             c_api.TF_GetCode(self.status.status))
    529     # Delete the underlying status object from memory otherwise it stays alive
    530     # as there is a reference to status from this from the traceback due to

InvalidArgumentError: Input to reshape is a tensor with 128 values, but the requested shape requires a multiple of 150
     [[{{node attention_16/Reshape_2}}]]
     [[{{node loss_5/mul}}]]

我认为损失函数的错误之处在于:Input to reshape is a tensor with 2 * "batch_size" values, but the requested shape has "batch_size"

但我不知道该修哪一部分。

我的keras和tensorflow版本是2.2.4和1.13.0-rc0。

请帮帮忙。谢谢。

编辑1

我已经改变了我的批次大小,就像keras一样,倍数为150(batch_size = 150)。比它报告的还要多

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Train on 143613 samples, validate on 15958 samples
Epoch 1/15
143400/143613 [============================>.] - ETA: 0s - loss: 0.1505 - acc: 0.9619


InvalidArgumentError: Input to reshape is a tensor with 63 values, but the requested shape requires a multiple of 150
     [[{{node attention_18/Reshape_2}}]]
     [[{{node metrics_6/acc/Mean_1}}]]

细节和以前一样。我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-26 12:32:17

您的输入形状必须是(150,1)

LSTM形状为(batch, steps, features)。只使用一步LSTM是没有意义的。(除非您使用的是stateful=True的自定义培训循环,这不是您的情况)。

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

https://stackoverflow.com/questions/58123825

复制
相关文章
Android 隐藏显示键盘
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49105161
Hankkin
2018/09/06
1.9K0
android 模拟器 haxm,Android模拟器不使用HAXM
我遇到HAXM问题.在我使用Windows 7之前,一切都很好,但升级到Win8.1 Pro后,当我从AVD屏幕启动模拟器时,我看不到haxm启动消息. HAXM安装并正常工作,我安装了x86的图像,我的设备使用它但仍然无法在启动窗口中看到Emulator正在使用haxm的确认消息.
全栈程序员站长
2022/09/13
2.1K0
Android开发-模拟器的使用-02
我们开发的Android程序是放在移动设备(如:手机,平板电脑等)上面运行的,我们不可能每次编写一个程序都要放到移动设备上面去测试运行。这样是很不方便的。另外,不是每个开发人员都有这样的移动设备。
Hongten
2018/09/13
7990
[译]Android 模拟器:Project Marble 中的改进
这是 Android Studio 团队一系列博客文章中第三篇,深入探讨了 Project Marble 中的细节和幕后情况。本文是由模拟器团队的 Sam Lin(产品经理),Lingfeng Yang(技术主管)和 Bo Hu(技术主管)撰写的。
Android 开发者
2019/08/29
1.1K0
使用天天模拟器开发android应用
使用android studio开发安卓应用,自带的模拟器比较坑,于是用天天模拟器,先下载安装天天模拟器,然后:
冰封一夏
2019/09/11
5000
Genymotion Android模拟器Genymotion的安装和使用
下载地址:http://download.canadiancontent.netGenymotion.html
授客
2019/09/10
2K0
Genymotion Android模拟器Genymotion的安装和使用
移动端 input 键盘落下,页面未落下
页面整体不要设置 height:100%;overflow:hidden; 否则安卓端 点击input,页面不会上顶,也无法滚动,可能会遮挡【兑换】按钮,需要先收起键盘,再点击按钮,影响用户体验~
super.x
2019/11/03
8310
Android apk中so库文件未压缩
升级AS 3.6.1, 并且升级project build.gradle AGP 到3.6.1, 一个项目发现打包后文件骤然增大, 查看apk包,发现apk 包中so库文件未被压缩. 但是一个类似项目,相同版本却没有问题
全栈程序员站长
2022/07/02
1.3K0
Android apk中so库文件未压缩
Android TextView中显示图片
Android官方给我们提供的Html类下面的fromHtml方法 当你需要转换的HTML代码是带图片的,比如<IMG/>,那么你就需要使用到重载的第二个方法了,这个方法里面有个ImageGetter对象,实现这个类会发现它回调了一个抽象getDrawable方法,在这个方法里,我们可以进行远程图片的下载获取,本地资源图片的获取等。第三个参数TagHandler是用来自定义一些不属于HTML代码的一些标签,一般我们不会去用到,直接置为null即可 package com.example.mytestdemo
欢醉
2018/01/22
1.6K0
Android开发,在Fragment中,隐藏或关闭软键盘(虚拟键盘)的方法
网上可以搜到各种方法,实际测试中,我的开发用机中,仅仅下面这个方法有效,记录一下。
张云飞Vir
2020/03/16
4.3K0
Android SDK Manager无法显示可供下载的未安装SDK解决方案
Android SDK Manager无法显示可供下载的未安装SDK解决规划 2012-10-14
黄啊码
2020/05/29
2.8K0
一行代码帮你检测Android模拟器
博客:https://www.jianshu.com/p/434b3075b5dd
陈宇明
2020/12/15
4.3K0
一行代码帮你检测Android模拟器
点击加载更多

相似问题

Android键盘未显示

13

设置中未显示键盘的Android Manifest

10

Android :未显示软键盘

41

android web视图:键盘未显示

20

Android模拟器键盘

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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