2017-07-24 120 views
0

我想运行一个Keras模型,在该模型中,我从一个文件夹将88个图像读入numpy数组。这个数组应该被转换成Keras张量,以便我可以使用模型中的数据。我运行下面的代码:将Tensorflow数组转换成Keras数组

import os 
import numpy as np 
from PIL import Image 
from keras import backend as K 

current_dir = os.path.dirname('__file__') 
image_names = os.listdir(os.path.join(current_dir, 'images')) 
images = np.ndarray((len(image_names), 256, 256), dtype=np.uint8) 
for i, filename in enumerate(image_names): 
    images[i] = Image.open(os.path.join(current_dir, 
             'images', 
             filename)).resize((256, 256)).convert('L') 
images = images.astype(K.floatx()) 
images *= 0.96/255 
images += 0.02 
images = images.reshape(images.shape[0], 256, 256, 1) 

print(images.shape) 
cats_q = K.variable(images) 
print(type(cats_q)) 
print(K.is_keras_tensor(cats_q)) 

我得到以下输出

(87, 256, 256, 1) 
<class 'tensorflow.python.ops.variables.Variable'> 
False 

我怎么能输出转换成Keras张量?任何帮助将非常感激!

非常感谢, 安迪

回答

0

你应该先建立自己的模型,包括一个具有正确大小用来处理这些数据的输入张量,那么numpy的数组传递给keras模型时,你所说的“合适”功能。

当您建立keras模型时,张量是计算图中的边。你不想用一个值初始化它,而是用一个大小,然后在必要时传递值。

This page关于keras功能性API有一些很好的例子。