我对如何使用max_queue_size,workers感到use_multiprocessing困惑Keras 文档
有人可以举个例子,说明如果您有的话,您将如何使用它们
以下是我根据对这三个字段的不科学猜测来使用它的方法。
classifier.fit_generator(training_set,
steps_per_epoch = 8000,
epochs = 25,
validation_data = test_set,
validation_steps = 2000/32,
max_queue_size = 10,
use_multiprocessing = False,
workers=1)
Run Code Online (Sandbox Code Playgroud) 使用带有 Tensorflow 后端的 Keras,我试图训练一个 LSTM 网络,在 GPU 上运行它比在 CPU 上运行它需要更长的时间。
我正在使用 fit_generator 函数训练 LSTM 网络。每个 epoch 需要 CPU 约 250 秒,而每个 epoch 需要 GPU 约 900 秒。我的 GPU 环境中的包包括
keras-applications 1.0.8 py_0 anaconda
keras-base 2.2.4 py36_0 anaconda
keras-gpu 2.2.4 0 anaconda
keras-preprocessing 1.1.0 py_1 anaconda
...
tensorflow 1.13.1 gpu_py36h3991807_0 anaconda
tensorflow-base 1.13.1 gpu_py36h8d69cac_0 anaconda
tensorflow-estimator 1.13.0 py_0 anaconda
tensorflow-gpu 1.13.1 pypi_0 pypi
Run Code Online (Sandbox Code Playgroud)
我的 Cuda 编译工具是 9.1.85 版本,我的 CUDA 和驱动程序版本是
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: 10.1 | …Run Code Online (Sandbox Code Playgroud) x = tf.placeholder(dtype = tf.float32, shape = [None, 28, 28])
y = tf.placeholder(dtype = tf.int32, shape = [None])
images_flat = tf.contrib.layers.flatten(x)
logits = tf.contrib.layers.fully_connected(images_flat, 62, tf.nn.relu)
loss =
tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(
labels = y, logits = logits))
train_op =
tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)
correct_pred = tf.argmax(logits, 1)
accuracy = tf.reduce_mean(tf.cast(correct_pred,
tf.float32))
print("images_flat: ", images_flat)
print("logits: ", logits)
print("loss: ", loss)
print("predicted_labels: ", correct_pred)
AttributeError Traceback (most recent call last)
<ipython-input-17-183722ce66a3> in <module>
1 x = tf.placeholder(dtype = tf.float32, shape = [None, 28, 28])
2 y …Run Code Online (Sandbox Code Playgroud) 我有以下代码,
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
Run Code Online (Sandbox Code Playgroud)
现在model.fit_generator定义如下:
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=50,
validation_data=validation_generator,
validation_steps=800)
Run Code Online (Sandbox Code Playgroud)
现在model.fit_generator已过时,什么是改变的正确方法model.fit_generator,以model.fit在这种情况下?
https://software.intel.com/en-us/forums/computer-vision/topic/785538
“问题已经解决了,因为我使用的模型默认使用channels_first进行GPU训练,而OPENVINO需要使用channels_last来进行TF模型。”
这些是什么意思?
我怎样才能改变它们?
我在网上找不到任何对此的进一步参考。
neural-network deep-learning conv-neural-network tensorflow openvino
我是 Tensorflow 的新手,正在 Google Colaboratory 中开发笔记本。
在我的第一台笔记本上,我收到一条消息,要求更新到 Tensorflow v.2。
现在,在另一个笔记本中,我收到以下消息:
名称 tf.get_default_graph 已弃用。请改用 tf.compat.v1.get_default_graph。
如果我这样做,我使用的是 Tensorflow v2 吗?
我很困惑,因为v1in tf.compat.v1.get_default_graph。
所有的错误信息是:
警告:tensorflow:来自 /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:66:名称 tf.get_default_graph 已弃用。请改用 tf.compat.v1.get_default_graph。
警告:tensorflow:来自 /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:541:名称 tf.placeholder 已弃用。请改用 tf.compat.v1.placeholder。
警告:tensorflow:来自 /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4432:名称 tf.random_uniform 已弃用。请改用 tf.random.uniform。
警告:tensorflow:来自 /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4267:名称 tf.nn.max_pool 已弃用。请改用 tf.nn.max_pool2d。
我想我无法更改 keras 上的代码。
我的字典中有 6 个布尔变量,我想在所有可能的迭代上运行我的代码。所以我有:
params["is_A"] = True/False
params["is_B"] = True/False
...
Run Code Online (Sandbox Code Playgroud)
然后对于所有可能的组合,我想打电话
my_func(params)
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
我正在尝试将一些代码从tensorflow 1.x 转换为tensorflow 2.x。到目前为止进展顺利,但我陷入了空洞卷积。与其他层不同,似乎没有一对一的转换。
到目前为止,我已经将所有内容统一到 tf.keras。这里有一个纯 keras 实现和一个 tf.nn.atrous_conv2d 实现,但我也不确定是否可以在 tf.keras.Model 功能 api 中使用它们。
这是代码:
with tf.variable_scope('aconv1d_' + name):
shape = [None, 30, 128]
kernel = tf.get_variable('kernel', (1, size, shape[-1], n_filters), dtype=tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
if bias:
b = tf.get_variable('b', [shape[-1]], dtype=tf.float32, initializer=tf.constant_initializer(0))
out = tf.nn.atrous_conv2d(tf.expand_dims(input_tensor, dim=1), kernel, rate=rate, padding='SAME') + (
b if bias else 0)
out = tf.squeeze(out, [1])
return out
Run Code Online (Sandbox Code Playgroud)
我只想转换它,将其粘贴到 keras 功能 api 中,执行 model.fit,然后运行。
谢谢你帮助我这样的菜鸟。
我有一个任务,输入图像500x500x1并得到500x500x1二进制分割。500x500工作时,只应触发一小部分(小“目标”)。我在输出处使用 sigmoid 激活。由于希望如此小的分数为正,因此训练往往会因所有输出为零或非常接近而停止。我已经编写了自己的损失函数来部分处理它,但如果可能的话,我想使用带有类权重的二元交叉熵。
我的问题分为两部分:
如果我天真地将binary_crossentropy损失应用于我的500x500x1输出,它会根据需要应用于每个像素吗?
keras 有没有办法通过每个像素的单个 sigmoid 输出来应用类权重?
我正在尝试训练我的 6000 个训练数据集和 1000 个验证数据集,但我有一个问题:程序在训练期间只是冻结和挂起,没有任何错误消息。
1970/6000 [========>.....................] - ETA: 1:50:11 - loss: 1.2256 - accuracy: 0.5956
1971/6000 [========>.....................] - ETA: 1:50:08 - loss: 1.2252 - accuracy: 0.5958
1972/6000 [========>.....................] - ETA: 1:50:08 - loss: 1.2248 - accuracy: 0.5960
1973/6000 [========>.....................] - ETA: 1:50:06 - loss: 1.2245 - accuracy: 0.5962
1974/6000 [========>.....................] - ETA: 1:50:04 - loss: 1.2241 - accuracy: 0.5964
1975/6000 [========>.....................] - ETA: 1:50:02 - loss: 1.2243 - accuracy: 0.5961
1976/6000 [========>.....................] - ETA: 1:50:00 - loss: 1.2239 - …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 TensorFlow2 构建一些模型,因此我创建了一个模型类,如下所示:
import tensorflow as tf
class Dummy(tf.keras.Model):
def __init__(self, name="dummy"):
super(Dummy, self).__init__()
self._name = name
self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
def call(self, inputs, training=False):
x = self.dense1(inputs)
return self.dense2(x)
model = Dummy()
model.build(input_shape=(None,5))
Run Code Online (Sandbox Code Playgroud)
现在我想绘制模型,同时使用summary()返回我期望的内容,plot_model(model, show_shapes=True, expand_nested=True)仅返回带有模型名称的块。
如何返回模型的图表?
我目前正在训练 CNN 来检测一个人是否戴口罩。不幸的是,我不明白为什么我的验证损失如此之高。正如我注意到的,我正在验证的数据是在类之后排序的(这是网络的输出)。这对我的验证准确性和损失有影响吗?我使用计算机视觉测试了该模型,效果非常好,但验证损失和准确性看起来仍然非常错误。其原因何在?
validation machine-learning deep-learning conv-neural-network tensorflow
我正在从《使用Python进行深度学习》一书中学习Keras。我试图实现与书中提到的关于嵌入层的实现相同的内容。但我收到错误 NameError:名称“嵌入”未定义。我正在使用 Python 3.7 张量流: '1.13.1' keras :'2.2.4'
from keras.models import Sequential
from keras.layers import Flatten, Dense
model = Sequential()
model.add(Embedding(10000, 8 ,input_length= max_len))
Run Code Online (Sandbox Code Playgroud)
-------------------------------------------------- ------------------------- ----> 1 model.add(Embedding(10000, 8 ,输入长度= max_len))
NameError:名称“嵌入”未定义
keras ×8
tensorflow ×8
python ×5
python-3.x ×2
tf.keras ×2
combinations ×1
gpu ×1
jupyter ×1
keras-2 ×1
keras-layer ×1
openvino ×1
python-3.7 ×1
validation ×1