ValueError:输入 0 与层 conv_1 不兼容:预期 ndim=3,发现 ndim=4

2023-11-27

我正在尝试制作一个变分自动编码器来学习编码 DNA 序列,但遇到了意外错误。

我的数据是一组单热数组。

我遇到的问题是值错误。它告诉我,我有一个四维输入,而我的输入显然是三维的(100、4008、4)。

事实上,当我打印出seq层,它说它的形状是(?, 100, 4008, 4)。

当我取出一个维度时,它会给出一个二维错误。

任何帮助将不胜感激!

Code is:

from keras.layers import Input 
from keras.layers.convolutional import Conv1D
from keras.layers.core import Dense, Activation, Flatten, RepeatVector, Lambda
from keras import backend as K
from keras.layers.wrappers import TimeDistributed
from keras.layers.recurrent import GRU
from keras.models import Model
from keras import objectives

from one_hot import dna_sequence_to_one_hot

from random import shuffle
import numpy as np

# take FASTA file and convert into array of vectors
seqs = [line.rstrip() for line in open("/home/ubuntu/sequences.fa", "r").readlines() if line[0] != ">"]
seqs = [dna_sequence_to_one_hot(s) for s in seqs]
seqs = np.array(seqs)

# first random thousand are training, next thousand are validation
test_data = seqs[:1000]
validation_data = seqs[1000:2000]

latent_rep_size = 292
batch_size = 100
epsilon_std = 0.01
max_length = len(seqs[0])
charset_length = 4
epochs = 100

def sampling(args):
    z_mean_, z_log_var_ = args
    # batch_size = K.shape(z_mean_)[0]
    epsilon = K.random_normal_variable((batch_size, latent_rep_size), 0., epsilon_std)
    return z_mean_ + K.exp(z_log_var_ / 2) * epsilon

# loss function
def vae_loss(x, x_decoded_mean):
    x = K.flatten(x)
    x_decoded_mean = K.flatten(x_decoded_mean)
    xent_loss = max_length * objectives.categorical_crossentropy(x, x_decoded_mean)
    kl_loss = - 0.5 * K.mean(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis = -1)
    return xent_loss + kl_loss

# Encoder
seq = Input(shape=(100, 4008, 4), name='one_hot_sequence')
e = Conv1D(9, 9, activation = 'relu', name='conv_1')(seq)
e = Conv1D(9, 9, activation = 'relu', name='conv_2')(e)
e = Conv1D(9, 9, activation = 'relu', name='conv_3')(e)
e = Conv1D(10, 11, activation = 'relu', name='conv_4')(e)
e = Flatten(name='flatten_1')(e)
e = Dense(435, activation = 'relu', name='dense_1')(e)
z_mean = Dense(latent_rep_size, name='z_mean', activation = 'linear')(e)
z_log_var = Dense(latent_rep_size, name='z_log_var', activation = 'linear')(e)
z = Lambda(sampling, output_shape=(latent_rep_size,), name='lambda')([z_mean, z_log_var])

encoder = Model(seq, z)

# Decoder
d = Dense(latent_rep_size, name='latent_input', activation = 'relu')(z)
d = RepeatVector(max_length, name='repeat_vector')(d)
d = GRU(501, return_sequences = True, name='gru_1')(d)
d = GRU(501, return_sequences = True, name='gru_2')(d)
d = GRU(501, return_sequences = True, name='gru_3')(d)
d = TimeDistributed(Dense(charset_length, activation='softmax'), name='decoded_mean')(d)



# create the model, compile it, and fit it
vae = Model(seq, d)
vae.compile(optimizer='Adam', loss=vae_loss, metrics=['accuracy'])
vae.fit(x=test_data, y=test_data, epochs=epochs, batch_size=batch_size, validation_data=validation_data)

在文档中提到我们需要以特定格式提及输入,即(无,特征向量数量)。在你的情况下它将是(None,4)

https://keras.io/layers/卷积/

当使用该层作为模型中的第一层时,请提供 input_shape 参数(整数元组或 None,例如 (10, 128) 表示 128 维向量的 10 个向量的序列,或 (None, 128) 128 维向量的可变长度序列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ValueError:输入 0 与层 conv_1 不兼容:预期 ndim=3,发现 ndim=4 的相关文章

  • 为什么LeNet5使用32×32图像作为输入?

    我知道mnist数据集中的手写数字图像是28 28 但是为什么LeNet5中的输入是32 32 您的问题已在原纸 http yann lecun com exdb publis pdf lecun 98 pdf 卷积步骤始终采用比前一层的特
  • 使用 NLTK 在 Python 中获取大量名词(或形容词);或 Python Mad Libs

    Like 这个问题 https stackoverflow com questions 7439555 noun adjective etc word lists or dictionaries common words 我有兴趣按词性获取
  • 如何使用 Tensorflow-GPU 和 Keras 修复低易失性 GPU-Util?

    我有一台 4 GPU 机器 在上面运行带有 Keras 的 Tensorflow GPU 我的一些分类问题需要几个小时才能完成 nvidia smi returns Volatile GPU Util which never exceeds
  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 具有定制损失函数的随机森林

    我是机器学习领域的初学者 对于一个项目 我必须在随机森林分类中使用自定义损失函数 到目前为止我一直使用 scikit 通过 scikit 实现这一点的建议会更有帮助 损失函数 分类树中的基尼杂质和熵 在 scikit 的 tree pyx
  • 使用 scikit-learn 进行二次采样 + 分类

    我正在使用 Scikit learn 进行二元分类任务 并且我有 0 级 有 200 个观察值 第 1 类 有 50 个观察值 而且因为我有不平衡的数据 我想抽取多数类的随机子样本 其中观察数量与少数类相同 并且希望使用新获得的数据集作为分
  • 使用 Keras np_utils.to_categorical 的问题

    我正在尝试将整数的 one hot 向量数组制作为 keras 将能够使用的 one hot 向量数组来拟合我的模型 这是代码的相关部分 Y train np hstack np asarray dataframe output vecto
  • 如何创建增量NER训练模型(追加到现有模型中)?

    我正在训练定制命名实体识别 NER 模型使用斯坦福自然语言处理但问题是我想要重新训练模型 Example 假设我训练过xyz模型 然后我将在一些文本上测试它 如果模型检测到错误 那么我 最终用户 将更正它并希望在更正的文本上重新训练 追加模
  • 如何从 Pandas DataFrame 转换为 Tensorflow BatchDataset 以进行 NLP?

    老实说 我想弄清楚如何转换数据集 格式 pandasDataFrame或 numpy 数组 转换为简单文本分类张量流模型可以训练用于情感分析的形式 我使用的数据集类似于 IMDB 包含文本和标签 正面或负面 我看过的每个教程要么以不同的方式
  • 在按顺序读取的多个特征文件上训练 Keras 模型以节省内存

    当我尝试读取大量功能文件时 我遇到了内存问题 见下文 我想我应该分割训练文件并按顺序读取它们 做到这一点的最佳方法是什么 x train np load path features x train npy y train np load p
  • 大于 2GB 的 Tensorflow 图

    我正在尝试优化一个大型张量流保存模型 其中包含 10MB saving model pb 和 16GB 变量 我尝试冻结我的图表并进行一些进一步的转换 我已按照步骤操作https medium com google cloud optimi
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • Learning_rate 不是合法参数

    我正在尝试通过实现 GridSearchCV 来测试我的模型 但我似乎无法在 GridSearch 中添加学习率和动量作为参数 每当我尝试通过添加这些代码来执行代码时 我都会收到错误 这是我创建的模型 def define model op
  • 为什么平均百分比误差(mape)非常高?

    我已获得代码掌握机器学习 https machinelearningmastery com time series prediction lstm recurrent neural networks python keras 我修改了mod
  • 如何理解SpatialDropout1D以及何时使用它?

    偶尔我会看到一些模型正在使用SpatialDropout1D代替Dropout 例如 在词性标记神经网络中 他们使用 model Sequential model add Embedding s vocabsize EMBED SIZE i
  • 获取每个训练实例的损失值 - Keras

    我想获得每个实例的损失值作为模型训练 history model fit 例如 上面的代码返回每个时期的损失值 而不是小批量或实例 做这个的最好方式是什么 有什么建议么 在这个 keras 官方文档页面的末尾 正是您要寻找的内容https
  • 分类报告 - 精度和 F 分数定义不明确

    我从 sklearn metrics 导入了classification report 当我输入我的np arrays作为参数我收到以下错误 usr local lib python3 6 dist packages sklearn met
  • 增加 sigmoid 预测输出值?

    我创建了一个用于文本分类的 Conv1D 模型 当在最后一个密集处使用 softmax sigmoid 时 它产生的结果为 softmax gt 0 98502016 0 0149798 sigmoid gt 0 03902826 0 00
  • Pytorch TypeError:eq() 收到无效的参数组合

    num samples 10 def predict x sampled models guide None None for in range num samples yhats model x data for model in sam

随机推荐

  • 绘制带有圆周的 3D 球体

    我正在尝试使用 matplotlib 绘制一个像这样的球体 但我找不到一种在背面有虚线的方法 而且垂直周长看起来有点奇怪 import numpy as np import matplotlib pyplot as plt from mpl
  • Spark Dataframe 列与其他列的最后一个字符

    我正在寻找一种方法来从数据帧列中的字符串中获取最后一个字符并将其放入另一列中 我有一个 Spark 数据框 如下所示 animal cat mouse snake 我想要这样的东西 lastchar t e e 现在我可以使用如下 UDF
  • Apache JMeter支持http/2请求吗?

    JMeter 3 2 支持 HTTP2 吗 从版本 4 0 开始 Core JMeter 不支持 HTTP2 但有一个plugin实现它 This plugin可以通过安装JMeter 插件管理器 关于HTTP Client 自2018年1
  • Jquery背景动画

    是否可以将其动画化background color在 jQuery 中 因为它不起作用 something animate background red 1000 来自docs The jQuery用户界面项目扩展了 animate 方法通
  • 使用 Node JS 将记录数组插入 mysql

    我有一组类似的数据 var records Name Id 1 Name Id 2 Name Id 3 Name Id 4 Name Id 5 Name Id 6 记录数组中可能有数千个项目 问题1 我们可以创建一个存储过程来接受mysql
  • 为 Python 2/3 实现 Google 的 DiffMatchPatch API

    我想用 Python 编写一个简单的 diff 应用程序Google 的差异匹配补丁 API 我对 Python 还很陌生 所以我想要一个示例来说明如何使用 Diff Match Patch API 对两个文本段落进行语义比较 我不太确定如
  • Django 注释:想要删除用户 URL,而不是扩展模型。如何?

    我完全理解有关在 Django 中扩展评论应用程序的文档 并且真的想坚持使用自动功能but 在当前的应用程序中 我完全没有必要将 URL 与评论一起提交 Being 微创默认设置 我怎样才能防止这个字段出现在评论表单中 使用 Django
  • 无法使 GWT 应用程序作为 Chrome 打包应用程序工作,可能是由于 CSP

    不断收到 CSP 错误 拒绝执行内联脚本 因为它违反了以下内容安全策略指令 script src self 该问题可能是由于 GWT 生成的 HTML 文件包含内联 JS UPD 更改为清单版本 1 有所帮助 但这是一个临时解决方法 因为
  • Java世界里有类似WPF和MVVM的东西吗?

    Java世界里有类似WPF和MVVM的东西吗 你见过吗eFace eFace 是 Java 中的 XAML WPF 解决方案 第一个版本可用于 现在下载 http www soyatec com eface installation Jav
  • 我可以在 .ld 文件中使用预处理器指令吗

    我可以在 ld 文件中使用预处理器指令吗 我需要使用两组 ld 文件中的一组 并希望让构建引擎使用宏来决定 我可以这样做吗 是的你可以 您需要为链接器脚本手动运行预处理器 如下所示 in your linker script ld out
  • 为什么 Scala 中的柯里化需要多个参数列表?

    假设我有一个有 2 个参数的函数 需要部分应用 我需要将其定义为 def f a Int b Int some code 然后我可以将其部分应用为def fWithA f a 我的问题是 为了柯里化函数 为什么 Scala 要求使用多个参数
  • 相当于Java中C的“_getch()”函数吗?

    我使用 Google Wave 并且我想模拟在您实际按下 Enter 键之前发送消息的功能 Java中是否有相当于C函数的函数 getch 您可以使用 JLine 库的 ConsoleReader readVirtualKey 方法 看ht
  • 当页面重新加载时,JavaScript setTimeout 函数是否停止?

    如果我发起一个setTimeout函数从触发器 当页面重新加载时函数会停止吗 我发起一个setTimeout功能periodic update on the onload我的页面的事件 这是否创建了多个实例periodic update 功
  • C++0x 将不再有概念。意见?这将如何影响你?

    在 2009 年 7 月C 0x 法兰克福会议 决定删除概念来自 C 0x 就我个人而言 我很失望 但我宁愿有一个可实现的 C 0x 也不愿没有 C 0x 他们表示将在稍后添加 您对此决定 问题有何看法 它将如何影响你 就我个人而言 我对删
  • 将文本基线与 div 底部对齐

    我正在尝试调整baseline中的某些文本div到所说的最底部边缘div 这样的角色就像g and j实际上会溢出 div 我似乎只能将文本元素的底部边缘与文本元素的底部边缘对齐div 我尝试过使用vertical align有价值观bas
  • CSS 选择器 * + * 定义?

    css 选择器 到底是什么意思 当您执行检查元素时 您可以在谷歌浏览器的控制台中看到它 根据我的说法 这似乎是对 每个第二个孩子 应用一种风格 但仍然想确定一下 谁能帮我吗 Example margin top 1em 表示 任何具有前一个
  • 通用 UITableView 键盘调整大小算法

    我搜索了很多调整表视图大小以适应键盘显示和隐藏的代码 但我遇到的几乎每一篇文章都假设表视图正在获取其视图控制器的整个视图 我有一个 iPad 应用程序 其中表格视图仅占据屏幕的一部分 在这种情况下调整表视图大小的正确方法是什么 我上面提到的
  • 相机覆盖随方位角和高度变化

    Folks 我正在尝试获取如下图所示的实用程序 基本上 相机显示窗口覆盖了设备屏幕的一部分 并且由曲线或直线连接的点列表作为覆盖层呈现在相机视图上 我知道这可以使用石英来绘制 但这还不到我的问题的一半 真正的问题是 随着方位和标高的变化 叠
  • 如何在Python中读取/dev/random

    我在一本书上读到 dev random就像一个无限文件 但是当我设置以下代码来查看内容是什么样子时 它什么也不打印 with open dev random as f for i in xrange 10 print f readline
  • ValueError:输入 0 与层 conv_1 不兼容:预期 ndim=3,发现 ndim=4

    我正在尝试制作一个变分自动编码器来学习编码 DNA 序列 但遇到了意外错误 我的数据是一组单热数组 我遇到的问题是值错误 它告诉我 我有一个四维输入 而我的输入显然是三维的 100 4008 4 事实上 当我打印出seq层 它说它的形状是