gpt4 book ai didi

python - 层 conv1d_1 的输入 0 与层 : expected ndim=3, 不兼容,发现 ndim=2。完整形状收到 : [None, 200]

转载 作者:行者123 更新时间:2023-12-01 07:26:24 24 4
gpt4 key购买 nike

我正在开发能够预测 10 秒音频文件中有趣时刻的应用程序。我将音频分成 50 毫秒的 block 并提取音符,因此每个示例有 200 个音符。当我添加卷积层时,它返回一个错误:

ValueError: Input 0 of layer conv1d_1 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 200]

这是我的代码:

def get_dataset(file_path):
dataset = tf.data.experimental.make_csv_dataset(
file_path,
batch_size=12,
label_name='label',
na_value='?',
num_epochs=1,
ignore_errors=False)
return dataset

train = get_dataset('/content/gdrive/My Drive/MyProject/train.csv')
test = get_dataset('/content/gdrive/My Drive/MyProject/TestData/manual.csv')
feature_columns = []

for number in range(200):
feature_columns.append(tf.feature_column.numeric_column('note' + str(number + 1) ))

preprocessing_layer = tf.keras.layers.DenseFeatures(feature_columns)

model = tf.keras.Sequential([
preprocessing_layer,
tf.keras.layers.Conv1D(32, 3, padding='same', activation=tf.nn.relu, input_shape=[None, 200]),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(50, activation=tf.nn.relu),
tf.keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
model.compile(
loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(train, epochs=20)

是什么原因导致此问题以及如何解决?

最佳答案

序列上的 1D 卷积需要 3D 输入。换句话说,对于批处理中的每个元素,对于每个时间步,都有一个向量。考虑以下因素:

X = tf.random.normal([10, 200])
convolved = tf.keras.layers.Conv1D(32, 3, padding='same', activation=tf.nn.relu, input_shape=[None, 200])
print(convolved(X))

这会引发错误:

ValueError: Input 0 of layer conv1d_3 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [10, 200]

但是,如果我们为 10 个批处理样本中的每一个、5 个时间步中的每一个提供一个 200 维向量:

X = tf.random.normal([10, 5, 200])
convolved = tf.keras.layers.Conv1D(32, 3, padding='same', activation=tf.nn.relu, input_shape=[None, 200])
print(convolved(X)

这按其应有的方式工作。因此,在您的情况下,对于每个音频文件,每秒(取决于您对数据进行采样的方式),您将拥有一个向量。

关于python - 层 conv1d_1 的输入 0 与层 : expected ndim=3, 不兼容,发现 ndim=2。完整形状收到 : [None, 200],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57430717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com