书中的示例模型运行良好。
model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28, 28]))
model.add(keras.layers.Dense(300, activation="relu"))
model.add(keras.layers.Dense(100, activation="relu"))
model.add(keras.layers.Dense(10, activation="softmax"))
虽然当我尝试将input_shape从[28,28]更改为[1920,1080]或[1]时,编译器会显示:
文件用户"C: User1 PycharmProjects untitled3 venv lib python网站 tensorflow framework ops.py",第6862行,在raise_from_not_ok_statussix.raise_from (core._status_to_exception (e。文件",第3行,在raise_from
tensorflow.python.framework.errors_impl.ResourceExhaustedError:伯父当分配形状为[2073600,300]且类型为float on的张量时/job:localhost/replica:0/task:0/device:CPU:0 by allocator CPU [Op:Mul]
对我来说,它看起来像是在处理器中加载张量,但它不是数据,只是模型创建。会是什么问题呢?
这就是为什么在处理图像时应该使用卷积神经网络。每个像素都成为一个特征,每个像素都将连接到你的密集层的每个单元。
假设你有一个1920*1080
图片和一个有300个单元的密集层,这是你的第一层的622080000个参数,这将使你的GPU过载。请尝试使用convnet。
model = keras.Sequential(
[
keras.Input(shape=input_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(num_classes, activation="softmax"),
]
)