Tensorflow 错误无法创建目录

8go*_*ent 4 python machine-learning deep-learning tensorflow

我正在创建一个深度学习程序并试图训练数据。我已经开始使用张量板,但遇到与创建的文件有关的错误,说程序无法创建目录,并且没有这样的文件或目录。

我在 Python 第 4 部分中遵循了 senddex 深度学习教程,但仍然有错误。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D
import pickle
import time
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.callbacks import TensorBoard

NAME = 'Tagged-vs-untagged-cnn-64x2-{}'.format(int(time.time()))
tensorboard = TensorBoard(log_dir='logs/{}'.format(NAME))

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))


X = pickle.load(open('X.pickle', 'rb'))
y = pickle.load(open('y.pickle', 'rb'))

#data must be normalised
X = X/255.0

model = Sequential()
model.add(Conv2D(64, (3,3), input_shape = X.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64, (3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())

model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

model.fit(X, y, batch_size=32, epochs=10, validation_split=0.3, callbacks=[tensorboard])
Run Code Online (Sandbox Code Playgroud)

在 recursive_create_dir_v2 pywrap_tensorflow.RecursivelyCreateDir(compat.as_bytes(path)) tensorflow.python.framework.errors_impl.NotFoundError:无法创建目录:logs/Tagged-vs-untagged-cnn-64x2-15634479\702\1plugins -18_12-02-54; 无此文件或目录 在 recursive_create_dir_v2 pywrap_tensorflow.RecursivelyCreateDir(compat.as_bytes(path)) tensorflow.python.framework.errors_impl.NotFoundError:无法创建目录:logs/Tagged-vs-untagged-cnn-64x2-15634479\702\1plugins -18_12-02-54; 无此文件或目录

Imt*_*har 12

问题不在于 TensorFlow 或 tensorboard,而在于 Python,这对于 Windows 来说太特别了。

目前,在 Unix 上,SplitPath 仅在正斜杠上拆分;在 Windows 上,除非字符串中没有正斜杠,否则它会在正斜杠上拆分,在这种情况下,它会在反斜杠上拆分。这令人困惑,并且与 _wmkdir 和 Tensorflow 等平台 API 不一致,后者将 \ 和 / 解释为有效的路径分隔符。

解决方法是在 log_dir 中使用适合平台的路径分隔符,而不是通过 os.path.join 硬编码正斜杠:

所以试试这个:

tboard_log_dir = os.path.join("logs",NAME)
tensorboard = TensorBoard(log_dir = tboard_log_dir)
Run Code Online (Sandbox Code Playgroud)

这应该工作