提问人:Santaissick 提问时间:10/11/2023 最后编辑:Santaissick 更新时间:10/11/2023 访问量:50
无法将 model.save 与 TensorFlow/Keras 一起使用。可能是因为 TensorFlow 不支持非英文字母
Can't use model.save with TensorFlow/Keras. Probably because TensorFlow doesn't support non-English letters
问:
我是初学者,我正在遵循 NeuralNine 的教程:https://www.youtube.com/watch?v=bte8Er0QhDg
尝试制作一个非常基本的神经网络来识别 python 中的手写数字。训练模型和其他一切正常,直到我尝试使用 model.save 保存模型,并在终端中得到以下内容:
回溯(最近一次调用最后一次): 文件“c:\Users\Käyttäjä\Desktop\Sampo\Neural\handwritten.py”,第 33 行,在 model.save('手写.model.test1') 文件“C:\Users\Käyttäjä\AppData\Local\Programs\Python\Python311\Lib\site-packages\keras\src\utils\traceback_utils.py”,第 70 行,error_handler 从无中提升 e.with_traceback(filtered_tb) 文件“C:\Users\Käyttäjä\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\lib\io\file_io.py”,第 513 行,recursive_create_dir_v2 _pywrap_file_io。递归创建Dir(compat.path_to_bytes(路径)) tensorflow.python.framework.errors_impl。FailedPreconditionError:handwritten.model.test1\variables 不是目录 PS C:\Users\Käyttäjä>
我认为这可能是因为 Käyttäjä(表示用户)中的字母 Ä 阻止了模型的成功保存,因为对目录名称或类似内容进行编码可能存在问题。或者它可能完全是其他东西,因为我只是一个初学者。
我不能只更改目录名称,因为它会扰乱其他用户。有没有适合这种情况的解决方法?还是我错了,其他地方有问题? 我在任何地方都找不到解决问题的方法,所以我写了这篇文章。非常感谢任何和所有的帮助!谢谢!
这是我正在使用的代码:
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
# Load the dataset
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# Use tf to normalize datasets between 0-1
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
# Create a basic sequential model. Also define the shape of input to be flattened 28 x 28 because of dataset beeing a 28 x 28 greyscale image.
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
# Second, Dense, layer is a layer where every neuron is connected to every neuron. relu= rectified linear unit is the activation function (negative values turn to 0)
model.add(tf.keras.layers.Dense(128, activation='relu'))
# thrid layer, exactly same
model.add(tf.keras.layers.Dense(128, activation='relu'))
# final layer. 10 outputs for numbers 0-9. Softmax activation function is often used for the output. Gives a probability distribution as the output
model.add(tf.keras.layers.Dense(10, activation='softmax'))
# compile model using optimizer algorithm and loss function
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# finally train the model. Model is going to see each datapoint 3 times
model.fit(x_train, y_train, epochs=3)
# after the model has been trained, save the model as handwritten.model
model.save('handwritten.model.test1')
答:
问题应该是,除非您将保存路径定义为“path.keras”,否则模型将保存在由提供的路径定义的目录中。在您的情况下,tensorflow 似乎试图将模型保存在不存在的目录“./handwritten.model.test1”中。
使用“path.keras”约定将模型保存在文件中,或者先创建一个目录,然后将其作为参数传递给model.save
评论