UFuncTypeError:无法使用强制转换规则“同类”将ufunc“乘法”输出从dtype(“<U32”)强制转换为dtype('float32')?

2024-03-28 16:43:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个ML模型,用于对石头、布和剪刀的手势图像进行分类。我不断收到如下错误消息:

UFuncTypeError: Cannot cast ufunc 'multiply' output from dtype('<U32') to dtype('float32') with casting rule 'same_kind'

这是我的密码:

import tensorflow as to
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow import keras
from tensorflow.keras import layers

!wget --no-check-certificate \ 
https://dicodingacademy.blob.core.windows.net/picodiploma/ml_pemula_academy/rockpaperscissors.zip
-O /tmp/rockpaperscissors.zip

import zipfile,os
local_zip = '/tmp/rockpaperscissors.zip'
zip_ref = zipfile.ZipFile(local_zip, 'r')
zip_ref.extractall('/tmp')
zip_ref.close()

!pip install split_folders 
import split_folders as SF
sf.ratio('/tmp/rockpaperscissors/rps-cv-images', 
output="/tmp/rockpaperscissors/data",seed=1337, ratio=(.8, .2))

root_path = '/tmp/rockpaperscissors/data'
train_path = os.path.join(root_path, 'train')
validation_path = os.path.join(root_path, 'val')

train_datagen = ImageDataGenerator(
                rescale = "none",
                rotation_range = 30,
                vertical_flip = True,
                horizontal_flip = True,
                zoom_range = 0.1,
                width_shift_range = 0.1,
                    height_shift_range = 0.1,
                shear_range = 0.2,
                fill_mode = 'nearest')

test_datagen = ImageDataGenerator(
                rescale = "none",
                rotation_range = 30,
                vertical_flip = True,
                horizontal_flip = True,
                zoom_range = 0.1,
                width_shift_range = 0.1,
                    height_shift_range = 0.1,
                shear_range = 0.2,
                fill_mode = 'nearest')

train_generator = train_datagen.flow_from_directory(
        train_path,  
        target_size=(150, 150),  
        batch_size=32,
        class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
        validation_path, 
        target_size=(150, 150), 
        batch_size=32, 
        class_mode='categorical')

model = keras.Sequential()
model.add(layers.Conv2D(32, (5,5), activation='relu', input_shape=(150, 150, 
3)))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Conv2D(128, (3,3), activation='relu'))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Conv2D(256, (3,3), activation='relu'))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Conv2D(512, (3,3), activation='relu'))
model.add(layers.MaxPooling2D(2, 2))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(3, activation='softmax'))

model.summary()

loss_fn = keras.losses.SparseCategoricalCrossentropy()

model.compile(loss=loss_fn,
          optimizer=RMSprop(),
          metrics=['accuracy'])

model.fit(
  train_generator,
  steps_per_epoch=54,  
  epochs=22,
  validation_data=validation_generator, 
  validation_steps=13,  
  verbose=2)

以下是我的代码链接: Rock Paper Scissors Classifier 谢谢


Tags: pathfromimportaddmodellayersrangetrain