带有图像增强数据集的 CNN 模型

问题描述

我想使用图像数据集创建带有图像增强的 cnn 模型。当我尝试加载图像增强数据时,它显示如下错误 ValueError: Shapes (None,None,None) and (None,12,28,64)不兼容

执行步骤: •训练数据:otrain_images:像素的归一化值otrain_labels:存储为One-Hot编码数据•验证数据:oval_images:像素的归一化值oval_labels:存储为One-Hot编码数据•类:“squiggle”、“narrowband”、“窄带”和“噪声”

•使用 CNN 准备详细的 Python 笔记本,以便使用来自 SETI 数据集的 Keras 对来自深空的无线电信号进行分类•导入所需的库•加载和预处理数据集o使用 Pandas 加载数据集 read_csvfunctiono检查训练和验证数据的形状o重塑训练和验证图像

使用 Keras ImageDataGenerator 函数创建训练和验证数据生成器•设计卷积神经网络 (CNN) 模型•使用 Adam 优化器、categorical_crossentropy 损失函数和准确度指标编译模型•打印模型摘要•使用 batch_size = 32 & epochs = 训练模型12 •评估模型o使用model.evaluate函数评估准确性oPrint

这里是代码:`

import tensorflow
import keras
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

x_train=pd.read_csv("/content/images1.csv")
y_train=pd.read_csv("/content/labels1.csv")

x_valid=pd.read_csv("/content/images_2.csv")
y_valid=pd.read_csv("/content/labels_2.csv")

x_train=x_train/255
x_valid=x_valid/255

x_valid.drop("Unnamed: 0",axis=1,inplace=True)
y_valid.drop("Unnamed: 0",inplace=True)

x_train.drop("Unnamed: 0",inplace=True)
y_train.drop("Unnamed: 0",inplace=True)

x_train_img=np.array([x_train.iloc[i] for i in range(x_train.shape[0])])
x_train_imge=np.array([x_train_img[i].reshape(64,128,1) for i in range(x_train_img.shape[0])])

x_valid_img=np.array([x_valid.iloc[i] for i in range(x_valid.shape[0])])
x_valid_imge=np.array([x_valid_img[i].reshape(64,1) for i in range(x_valid_img.shape[0])])

y_train = tf.keras.utils.to_categorical(y_train)
y_valid = tf.keras.utils.to_categorical(y_valid)

datagen_train = tf.keras.preprocessing.image.ImageDataGenerator(
    featurewise_center=True,featurewise_std_normalization=True,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True,validation_split=0.2)

datagen_train.fit(x_train_imge)

datagen_valid = tf.keras.preprocessing.image.ImageDataGenerator(
    featurewise_center=True,validation_split=0.2)

datagen_valid.fit(x_valid_imge)

import tensorflow as tf
from tensorflow.keras import datasets,layers,models
model=models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=x_train_imge.shape[1:]))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64,activation='relu'))
model.add(layers.MaxPooling2D((2,activation='relu'))

model.compile(optimizer='adam',loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=['accuracy'])
model.fit(datagen_train.flow(x_train_imge,y_train),epochs=12,batch_size=32,validation_data=datagen_valid.flow(x_valid_imge,y_valid))

    

错误:在用户代码中:

/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:855 train_function  *
    return step_function(self,iterator)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:845 step_function  **
    outputs = model.distribute_strategy.run(run_step,args=(data,))
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:1285 run
    return self._extended.call_for_each_replica(fn,args=args,kwargs=kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:2833 call_for_each_replica
    return self._call_for_each_replica(fn,args,kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:3608 _call_for_each_replica
    return fn(*args,**kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:838 run_step  **
    outputs = model.train_step(data)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:797 train_step
    y,y_pred,sample_weight,regularization_losses=self.losses)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/compile_utils.py:204 __call__
    loss_value = loss_obj(y_t,y_p,sample_weight=sw)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:155 __call__
    losses = call_fn(y_true,y_pred)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:259 call  **
    return ag_fn(y_true,**self._fn_kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:206 wrapper
    return target(*args,**kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:1644 categorical_crossentropy
    y_true,from_logits=from_logits)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:206 wrapper
    return target(*args,**kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/backend.py:4862 categorical_crossentropy
    target.shape.assert_is_compatible_with(output.shape)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/tensor_shape.py:1161 assert_is_compatible_with
    raise ValueError("Shapes %s and %s are incompatible" % (self,other))

ValueError: Shapes (None,64) are incompatible

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...