Python ValueError:Alexnet上以10为基数的int()的文本无效
嘿,我在运行Alexnet特征提取代码时出错了。我使用这个github创建Python ValueError:Alexnet上以10为基数的int()的文本无效,python,tensorflow,machine-learning,deep-learning,Python,Tensorflow,Machine Learning,Deep Learning,嘿,我在运行Alexnet特征提取代码时出错了。我使用这个github创建alexnet.pb文件。我用Tensorboard检查了一下,图表很好 我想使用此模型从fc7/relu中提取特征,并将其提供给另一个模型。我使用以下方法创建图形: data = 0 model_dir = 'model' images_dir = 'images_alexnet/train/' + str(data) + '/' list_images = [images_dir+f for f in os.list
alexnet.pb
文件。我用Tensorboard检查了一下,图表很好
我想使用此模型从fc7/relu
中提取特征,并将其提供给另一个模型。我使用以下方法创建图形:
data = 0
model_dir = 'model'
images_dir = 'images_alexnet/train/' + str(data) + '/'
list_images = [images_dir+f for f in os.listdir(images_dir) if re.search('jpeg|JPEG', f)]
list_images.sort()
def create_graph():
with gfile.FastGFile(os.path.join(model_dir, 'alexnet.pb'), 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
create_graph()
def extract_features(image_paths, verbose=False):
feature_dimension = 4096
features = np.empty((len(image_paths), feature_dimension))
with tf.Session() as sess:
flattened_tensor = sess.graph.get_tensor_by_name('fc7/relu:0')
for i, image_path in enumerate(image_paths):
if verbose:
print('Processing %s...' % (image_path))
if not gfile.Exists(image_path):
tf.logging.fatal('File does not exist %s', image)
image_data = gfile.FastGFile(image_path, 'rb').read()
feature = sess.run(flattened_tensor, {'input:0': image_data})
features[i, :] = np.squeeze(feature)
return features
然后输入输入
,并使用以下命令提取fc7/relu
层:
data = 0
model_dir = 'model'
images_dir = 'images_alexnet/train/' + str(data) + '/'
list_images = [images_dir+f for f in os.listdir(images_dir) if re.search('jpeg|JPEG', f)]
list_images.sort()
def create_graph():
with gfile.FastGFile(os.path.join(model_dir, 'alexnet.pb'), 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
create_graph()
def extract_features(image_paths, verbose=False):
feature_dimension = 4096
features = np.empty((len(image_paths), feature_dimension))
with tf.Session() as sess:
flattened_tensor = sess.graph.get_tensor_by_name('fc7/relu:0')
for i, image_path in enumerate(image_paths):
if verbose:
print('Processing %s...' % (image_path))
if not gfile.Exists(image_path):
tf.logging.fatal('File does not exist %s', image)
image_data = gfile.FastGFile(image_path, 'rb').read()
feature = sess.run(flattened_tensor, {'input:0': image_data})
features[i, :] = np.squeeze(feature)
return features
但我有一个错误:
ValueError: invalid literal for int() with base 10: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\
似乎我在输入图表时做错了。我看到使用Tensorboard的图形,似乎占位符dtype
是uint8
。我怎样才能解决这个问题
完全错误:
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Hermon Jay/Documents/Python/diabetic_retinopathy_temp6_transfer_learning/feature_extraction_alexnet.py", line 49, in <module>
features = extract_features(list_images)
File "C:/Users/Hermon Jay/Documents/Python/diabetic_retinopathy_temp6_transfer_learning/feature_extraction_alexnet.py", line 44, in extract_features
feature = sess.run(flattened_tensor, {'input:0': image_data})
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 889, in run
run_metadata_ptr)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1089, in _run
np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\numeric.py", line 531, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: invalid literal for int() with base 10: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\
运行文件中的文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第710行
execfile(文件名、命名空间)
文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第101行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/Hermon Jay/Documents/Python/diabetic\u retinopathy\u temp6\u transfer\u learning/feature\u extraction\u alexnet.py”,第49行,在
特征=提取特征(列出图像)
文件“C:/Users/Hermon Jay/Documents/Python/diabetics\u retinopathy\u temp6\u transfer\u learning/feature\u extraction\u alexnet.py”,第44行,在extract\u features中
feature=sess.run(展平张量,{'input:0':image\u data})
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\client\session.py”,第889行,正在运行
运行_元数据_ptr)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\client\session.py”,第1089行,正在运行
np\u val=np.asarray(subfeed\u val,dtype=subfeed\u dtype)
asarray中的文件“C:\ProgramData\Anaconda3\lib\site packages\numpy\core\numeric.py”,第531行
返回数组(a,数据类型,copy=False,order=order)
ValueError:基数为10的int()的文本无效:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x00\x00\x00\x01\x00\x01\x00\xff\xdb\x00C\x00\x08\x06\x07\x05\x08\x07\x07\t\t\t\x08\n\x0c\x14\r\x0c\x0c\x0b\x19\x12\x03\x14\x10d\
此行:
image_data = gfile.FastGFile(image_path, 'rb').read()
正在以字节数组的形式读取image\u路径中的文件。但是,输入
占位符需要的是类型为uint8
的四维数组。例如,看看您提供的链接中的下一个教程;函数get\u batch
使用一个附加的图形生成批,操作如下:;然后将该图的结果作为主网络图的输入
例如,您可以有这样的内容(如果所有图像都适合内存,否则您必须像教程中那样对它们进行批处理):
代码中引发错误的那一行是什么?你是如何得到alexnet.pb的?@jdehesa我用这个方法得到它,错误转到这一行feature=sess.run(展平张量,{'input:0':image\u data})
和产生错误的那一行?@jdehesa完成编辑