【问题标题】:CNN Uint8 datatype IssueCNN Uint8 数据类型问题
【发布时间】:2020-05-23 15:16:47
【问题描述】:

我正在尝试使用 Keras 为 MNIST 制作 CNN,但我的代码存在一些问题。 我大多得到这个错误:

    TypeError: Value passed to parameter 'input' has DataType uint8 not in list of allowed values: float16, bfloat16, float32, float64

这是我的代码:

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Dense, Conv2D, Dropout, MaxPooling2D
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.utils import to_categorical
(Train_Data, Train_Labels), (Test_Data, Test_Labels) = tf.keras.datasets.mnist.load_data()


Train_Data = Train_Data.reshape(60000,28,28,1)
Test_Data = Test_Data.reshape(10000,28,28,1)

def save(model):
    model.save("CNN")
def load(name):
    model = tf.keras.models.load_model(name)

model = keras.Sequential()
model.add(Conv2D(784, kernel_size=3, activation='relu'))
model.add(MaxPooling2D(pool_size=(5,5)))

model.add(Dropout(.2))
model.add(keras.layers.Flatten())
model.add(Dense(25, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.compile(optimzer='adam', loss="mse", metrics=['accuracy'])



model.fit(Train_Data, Train_Labels)

我不知道该怎么办,不胜感激,

【问题讨论】:

    标签: numpy keras conv-neural-network


    【解决方案1】:

    MNIST 数据的原始图像类型为 uint8(值在 [0,255] 范围内),但是在训练 CNN 之前,您需要对它们进行归一化。通常,您需要将其标准化为围绕零的某个统一界限,例如[-0.5,0.5]。您可以通过添加以下行来做到这一点:

    Train_Data = Train_Data / 255 - 0.5
    Test_Data = Train_Data / 255 - 0.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 2019-03-16
      • 1970-01-01
      • 2010-12-24
      • 2018-10-27
      • 2011-06-01
      相关资源
      最近更新 更多