我知道您可以重用Keras图层。例如,我为解码器网络声明了两层:
decoder_layer_1 = Dense(intermediate_dim,activation='relu',name='decoder_layer_1')
decoder_layer_2 = Dense(intermediate_dim,activation='relu',name='decoder_layer_2')
Run Code Online (Sandbox Code Playgroud)
在第一个模型中使用:
decoded = decoder_layer_1(z)
decoded = decoder_layer_2(decoded)
Run Code Online (Sandbox Code Playgroud)
在第二个模型中使用:
_decoded = decoder_layer_1(decoder_input)
_decoded = decoder_layer_2(_decoded)
Run Code Online (Sandbox Code Playgroud)
如果我只需要重用几个层,则上述方法是可以的,如果我想重用大量的层(例如,具有10个层的解码器网络),则比较麻烦。除了显式声明每一层之外,还有其他更有效的方法吗?是否有实现它的方法,如下所示:
decoder_layers = group_of_layers()
Run Code Online (Sandbox Code Playgroud)
在第一个模型中重复使用:
decoded = group_of_layers(z)
Run Code Online (Sandbox Code Playgroud)
在第二个模型中重复使用:
_decoded = group_of_layers(decoder_input)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Keras 预处理库中的生成器。我想对此进行试验,因为 Keras 为图像增强提供了很好的功能。但是,我不确定这是否真的可能。
以下是我从 Keras 生成器制作 tf 数据集的方法:
def make_generator():
train_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator =
train_datagen.flow_from_directory(train_dataset_folder,target_size=(224, 224), class_mode='categorical', batch_size=32)
return train_generator
train_dataset = tf.data.Dataset.from_generator(make_generator,(tf.float32, tf.float32)).shuffle(64).repeat().batch(32)
Run Code Online (Sandbox Code Playgroud)
请注意,如果您尝试直接将其train_generator作为参数提供给tf.data.Dataset.from_generator,则会出现错误。但是,上述方法不会产生错误。
当我在会话中运行它以检查数据集的输出时,我收到以下错误。
iterator = train_dataset.make_one_shot_iterator()
next_element = iterator.get_next()
sess = tf.Session()
for i in range(100):
sess.run(next_element)
Run Code Online (Sandbox Code Playgroud)
找到属于 2 个类别的 1000 张图像。-------------------------------------------------- ------------------------- InvalidArgumentError Traceback (最近一次调用最后一次) /usr/local/lib/python3.6/dist-packages/tensorflow/ python/client/session.py in _do_call(self, fn, *args) 1291 try: -> 1292 return fn(*args) 1293 除了 errors.OpError as e:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py in _run_fn(feed_dict, fetch_list, target_list, …
我有以下代码从目录中读取文件名:
directory = "C:/pics/*.csv"
file_names=tf.train.match_filenames_once(directory)
print(file_names)
<tf.Variable 'matching_filenames_1:0' shape=<unknown> dtype=string_ref>
with tf.Session() as sess:
tf.global_variables_initializer().run()
print(sess.run(file_names))
Run Code Online (Sandbox Code Playgroud)
当我运行会话时,我收到以下错误:"尝试使用未初始化的值matching_filenames"
请告诉我我做错了什么.
我试图按照此处提供的说明克隆和安装 Google Unrestricted 对抗性示例存储库。但我无法导入任何模块。首先,我克隆了存储库并更改到该目录。
!git clone https://github.com/google/unrestricted-adversarial-examples.git
cd unrestricted-adversarial-examples
Run Code Online (Sandbox Code Playgroud)
然后我使用了 pip install 命令。
!pip -e install bird-or-bicycle
Run Code Online (Sandbox Code Playgroud)
安装完成,没有任何错误。但是,当我尝试导入时,出现“找不到模块错误”。谁能告诉我我做错了什么?我在我的 PC 上尝试了相同的命令并且它有效。
import bird_or_bicycle
Run Code Online (Sandbox Code Playgroud)
ModuleNotFoundError: 没有名为“bird_or_bicycle”的模块
我正在尝试使用TensorFlow Dataset API和Pandas创建一个创建管道来读取多个CSV文件.但是,使用该flat_map方法会产生错误.但是,如果我使用map方法,我可以构建代码并在会话中运行它.这是我正在使用的代码.我已经在TensorFlow Github存储库中打开了#17415问题.但显然,这不是一个错误,他们让我发布在这里.
folder_name = './data/power_data/'
file_names = os.listdir(folder_name)
def _get_data_for_dataset(file_name,rows=100):#
print(file_name.decode())
df_input=pd.read_csv(os.path.join(folder_name, file_name.decode()),
usecols =['Wind_MWh','Actual_Load_MWh'],nrows = rows)
X_data = df_input.as_matrix()
X_data.astype('float32', copy=False)
return X_data
dataset = tf.data.Dataset.from_tensor_slices(file_names)
dataset = dataset.flat_map(lambda file_name: tf.py_func(_get_data_for_dataset,
[file_name], tf.float64))
dataset= dataset.batch(2)
fiter = dataset.make_one_shot_iterator()
get_batch = iter.get_next()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:map_func must return a Dataset object.我使用时管道工作没有错误,map但它没有给出我想要的输出.例如,如果Pandas从我的每个CSV文件中读取N行,我希望管道连接B文件中的数据并给我一个形状为数组的数组(N*B,2).相反,它给了我(B,N,2),其中B是批量大小.map添加另一个轴而不是在现有轴上连接.根据我在文档中的理解,flat_map我们应该提供平坦的输出.在本文档中,都map和flat_map回报类型的数据集.那么我的代码如何使用map而不是flat_map?
如果你能指出数据集API与Pandas模块一起使用的代码,那也很棒.