【问题标题】:ValueError: expected ndim=3, found ndim=2ValueError:预期 ndim=3,发现 ndim=2
【发布时间】:2021-04-05 02:11:02
【问题描述】:

我正在训练我的深度学习模型,当我运行我的代码时遇到了一些错误。

这是我的代码

import os
import json
import tensorflow as tf
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt

data_path = "data_json.json"

def load_data(data_path):
    print("Data loading\n")
    with open(data_path, "r") as fp:
        data = json.load(fp)

    x = np.array(data["mfcc"])
    y = np.array(data["labels"])

    print("Loaded Data")

    return x, y


def prepare_datasets(test_size,val_size):

    #load the data
    x, y = load_data(data_path)

    x_train, x_test, y_train, y_test = train_test_split(x,y,test_size = test_size)
    x_train, x_val, y_train, y_val = train_test_split(x_train,y_train,test_size = val_size)

    return x_train, x_val, x_test, y_train, y_val, y_test


def build_model(input_shape):


    model = tf.keras.Sequential()

    model.add(tf.keras.layers.LSTM(64, input_shape = input_shape, return_sequences = True))
    model.add(tf.keras.layers.LSTM(64))

    model.add(tf.keras.layers.Dense(64, activation="relu"))
    #model.add(tf.keras.layers.Dropout(0.3))

    model.add(tf.keras.layers.Dense(10,activation = "softmax"))

    return model

if __name__ == "__main__":


    x_train, x_val, x_test, y_train, y_val, y_test = prepare_datasets(0.25, 0.2)

    print(x_train.shape[0])

    input_shape = (x_train.shape[1],x_train.shape[2])
    model = build_model(input_shape)

    # compile model
    optimiser = tf.keras.optimizers.Adam(lr=0.001)
    model.compile(optimizer=optimiser,
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])

    model.summary()
    model = tf.keras.models.load_model("model_RNN_LSTM.h5")
    print(model.predict(x_test[100]))

我得到的错误是在线"print(model.predict(x_test[100]))"

.ValueError: 层序号_1 的输入 0 与 层:预期 ndim=3,发现 ndim=2。收到的完整形状:(无, 13) .

我该如何纠正这个错误?我需要更改尺寸吗?

【问题讨论】:

    标签: python tensorflow keras tensorflow2.0


    【解决方案1】:

    Keras predict() 批量工作 - https://www.tensorflow.org/api_docs/python/tf/keras/Model#predict

    print(model.predict(x_test[100][np.newaxis, ...]))
    

    【讨论】:

      【解决方案2】:

      将输入数组重塑为 (-1,batch_size,input_shape[0],input_shape[1],input_shape[2])。根据经验,predict() 需要一个额外的维度。对于图像,我肯定知道这一点,但您也可以尝试一下。

      【讨论】:

        猜你喜欢
        • 2019-06-22
        • 1970-01-01
        • 2021-02-14
        • 2021-04-08
        • 2019-06-04
        • 2019-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多