【问题标题】:UFuncTypeError: Cannot cast ufunc 'multiply' output from dtype('<U32') to dtype('float32') with casting rule 'same_kind'?UFuncTypeError:无法使用强制转换规则“same_kind”将 ufunc“乘法”输出从 dtype('<U32') 转换为 dtype('float32')?
【发布时间】:2020-10-20 12:32:56
【问题描述】:

我正在尝试创建一个机器学习模型,用于对石头、纸和剪刀的手势图像进行分类。我不断收到这样的错误消息:

UFuncTypeError: 无法使用转换规则“same_kind”将 ufunc 'multiply' 输出从 dtype('

这是我的代码:

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 谢谢!

【问题讨论】:

  • 您可以公开访问该文件吗?它说我需要请求访问权限。另外,脚本的哪一行是产生错误的那一行?
  • 您的 colab 代码不可公开访问,但是您可以关注这个 github 问题来解决与您的问题相同的问题 github.com/numpy/numpy/issues/7225

标签: python tensorflow classification google-colaboratory


【解决方案1】:

您使用none 作为字符串。使用rescale = None或不指定(其默认值已经是None)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2021-07-28
    • 2020-09-06
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多