在训练我的网络时,我偶尔会遇到警告:
W0722 11:47:35.101842 140641577297728 optimizer_v2.py:928] Gradients does not exist for variables ['model/conv1d_x/Variable:0'] when minimizing the loss.
这种情况偶尔会发生(可能每 20 步成功一次)。我的模型基本上有两条路径,它们在网络的不同位置连接在一起。为了说明这一点,这里有一个简单的例子来说明我的意思。
class myModel(tf.keras.Model):
def __init__(self):
self.conv1 = Conv2D(32)
self.conv2 = Conv2D(32)
self.conv3 = Conv2D(16)
def call(self, inputs):
net1 = self.conv1(inputs)
net2 = self.conv2(inputs)
net = tf.concat([net1, net2], axis=2)
net = self.conv3(net)
end_points = tf.nn.softmax(net)
model = myModel()
with tf.GradientTape() as tape:
predicition = model(image)
loss = myloss(labels, prediction)
gradients = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
Run Code Online (Sandbox Code Playgroud)
实际上,我的网络要大得多,但通常没有梯度的变量往往是网络顶部的变量。在每Conv2D
一层之前,我还有一个自定义渐变。有时当我出现错误时,我会注意到该层的梯度函数尚未被调用。
我的问题是梯度磁带如何在通过我的网络向后传播时有时会采用看起来不同的路径。我的第二个问题,这是由于我的网络有两条独立的路由(即 conv1 和 conv2)造成的。这种网络架构是否存在根本性缺陷?
理想情况下,我可以定义 …
当尝试使用pyplot绘制图形时,我运行以下代码:
from matplotlib import pyplot as plt
x = [6, 5, 4]
y = [3, 4, 5]
plt.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这将返回以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-59955f73b463> in <module>()
4 y = [3, 4, 5]
5
----> 6 plt.plot(x, y)
7 plt.show()
/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in plot(*args, **kwargs)
3304 @_autogen_docstring(Axes.plot)
3305 def plot(*args, **kwargs):
-> 3306 ax = gca()
3307 # Deprecated: allow callers to override the hold state
3308 # by passing hold=True|False
/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in gca(**kwargs)
948 matplotlib.figure.Figure.gca : …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编辑/修改python 2.7中的现有元数据.更具体地说,我的metedata中有GPS坐标,但海拔高度不正确.有没有办法改变这个?
我已经看了一下PIL
piexif
pyexif
,但我似乎找不到修改现有字段的方法.
有没有人设法做到这一点?这听起来很简单,但我似乎无法解决这个问题.
干杯戴夫
我正在使用 Python v2.7(Tensorflow 后端)中的 Keras v2.0.8 创建小型神经网络来计算简单的算术函数(加、减、乘等),并且有点困惑。下面的代码是我的网络,它生成一个带有相应标签的整数随机训练数据集(两个输入加在一起):
def create_data(low, high, examples):
train_data = []
label_data = []
a = np.random.randint(low=low, high=high, size=examples, dtype='int')
b = np.random.randint(low=low, high=high, size=examples, dtype='int')
for i in range(0, examples):
train_data.append([a[i], b[i]])
label_data.append((a[i] + b[i]))
train_data = np.array(train_data)
label_data = np.array(label_data)
return train_data, label_data
X, y = create_data(0, 500, 10000)
model = Sequential()
model.add(Dense(3, input_dim=2))
model.add(Dense(5, activation='relu'))
model.add(Dense(3, activation='relu'))
model.add(Dense(5, activation='relu'))
model.add(Dense(1, activation='relu'))
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
model.fit(X, y, epochs=10, batch_size=10)
test_data, _ = create_data(0, 500, 10) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试索引并保存无法加载到内存中的大型 csv。我用于加载 csv、执行计算并按新值建立索引的代码可以正常工作。一个简化版本是:
cluster = LocalCluster(n_workers=6, threads_per_worker=1)
client = Client(cluster, memory_limit='1GB')
df = dd.read_csv(filepath, header=None, sep=' ', blocksize=25e7)
df['new_col'] = df.map_partitions(lambda x: some_function(x))
df = df.set_index(df.new_col, sorted=False)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用大文件(即 > 15gb)时,在将数据帧保存到 csv 时遇到内存错误:
df.to_csv(os.path.join(save_dir, filename+'_*.csv'), index=False, chunksize=1000000)
Run Code Online (Sandbox Code Playgroud)
我尝试过设置chunksize=1000000
看看这是否有帮助,但没有帮助。
完整的堆栈跟踪是:
Traceback (most recent call last):
File "/home/david/data/pointframes/examples/dask_z-order.py", line 44, in <module>
calc_zorder(fp, save_dir)
File "/home/david/data/pointframes/examples/dask_z-order.py", line 31, in calc_zorder
df.to_csv(os.path.join(save_dir, filename+'_*.csv'), index=False, chunksize=1000000)
File "/usr/local/lib/python2.7/dist-packages/dask/dataframe/core.py", line 1159, in to_csv
return to_csv(self, filename, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/dask/dataframe/io/csv.py", line 654, in to_csv
delayed(values).compute(scheduler=scheduler) …
Run Code Online (Sandbox Code Playgroud)