Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Bek/6ba59c9409e464e49d8adaaa8e93501b to your computer and use it in GitHub Desktop.
Save Bek/6ba59c9409e464e49d8adaaa8e93501b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pyBigWig\n",
"import numpy as np\n",
"from tensorflow.keras.layers import Conv1D, Dense, MaxPooling1D, Flatten\n",
"from tensorflow.keras.models import Sequential"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"bw_input = pyBigWig.open('/data/GM12878/SRR1552485.fastqbowtie2.sorted.pos.BedGraph.sort.bedGraph.bw')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"bw_negative_input = pyBigWig.open('/data/GM12878/SRR1552485.fastqbowtie2.sorted.neg.BedGraph.sort.bedGraph.bw')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"bw_output = pyBigWig.open('/data/GM12878/ENCFF154XCY.bigWig')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"number_of_bins_input = int(bw_input.chroms()['chr1'] / 50)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"inputs_raw = np.nan_to_num(np.array(bw_input.stats('chr1', nBins=number_of_bins_input), dtype=float))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"negative_inputs_raw = np.nan_to_num(np.array(bw_negative_input.stats('chr1', nBins=number_of_bins_input), dtype=float))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"number_of_bins_output = int(bw_output.chroms()['chr1'] / 50)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"outputs_raw = np.nan_to_num(np.array(bw_output.stats('chr1', nBins=number_of_bins_output), dtype=float))"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import MinMaxScaler\n",
"scaler = MinMaxScaler(feature_range=(0,1))\n",
"positive_inputs_normalized = scaler.fit_transform(inputs_raw.reshape(-1,1))\n",
"negative_inputs_normalized = scaler.fit_transform(negative_inputs_raw.reshape(-1,1)*-1)*-1\n",
"outputs_normalized = scaler.fit_transform(outputs_raw.reshape(-1,1))"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.],\n",
" [0.]])"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"input_vectors = np.stack((positive_inputs_normalized, negative_inputs_normalized), -1).reshape(-1,2,1)\n",
"input_vectors[0]"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.plot(outputs_normalized)\n",
"plt.plot(negative_inputs_normalized)\n",
"plt.plot(positive_inputs_normalized)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 455,
"metadata": {},
"outputs": [],
"source": [
"gene_region_size = 500 # x 50bp"
]
},
{
"cell_type": "code",
"execution_count": 456,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(9970, 500, 2, 1)\n",
"(9970, 500)\n"
]
},
{
"data": {
"text/plain": [
"array([[0.],\n",
" [0.]])"
]
},
"execution_count": 456,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inputs = input_vectors[:(-(len(input_vectors) % gene_region_size))].reshape(-1,gene_region_size,2,1)\n",
"outputs = outputs_normalized[:(-(len(outputs_normalized) % gene_region_size))].reshape(-1, gene_region_size)\n",
"print(inputs.shape)\n",
"print(outputs.shape)\n",
"inputs[0][0]"
]
},
{
"cell_type": "code",
"execution_count": 457,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"train_features, test_features, train_labels, test_labels = train_test_split(\n",
" inputs, outputs, test_size=0.25, random_state=42)\n"
]
},
{
"cell_type": "code",
"execution_count": 458,
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.keras.layers import Conv1D, Conv2D, Dense, MaxPooling1D, MaxPooling2D, Flatten, Dropout\n",
"from tensorflow.keras.models import Sequential\n",
"from keras.utils import multi_gpu_model"
]
},
{
"cell_type": "code",
"execution_count": 468,
"metadata": {},
"outputs": [],
"source": [
"model = Sequential()\n"
]
},
{
"cell_type": "code",
"execution_count": 469,
"metadata": {},
"outputs": [],
"source": [
"model.add(Conv2D(filters=int(gene_region_size / 10), kernel_size=(10,2), activation='relu',\n",
" input_shape=(gene_region_size,2,1)))"
]
},
{
"cell_type": "code",
"execution_count": 470,
"metadata": {},
"outputs": [],
"source": [
"model.add(Conv2D(filters=int(gene_region_size / 10), kernel_size=(10,1), activation='relu'))\n"
]
},
{
"cell_type": "code",
"execution_count": 471,
"metadata": {},
"outputs": [],
"source": [
"model.add(MaxPooling2D(pool_size=(10,1)))"
]
},
{
"cell_type": "code",
"execution_count": 472,
"metadata": {},
"outputs": [],
"source": [
"model.add(Conv2D(filters=int(gene_region_size / 10), kernel_size=(10,1), activation='relu'))\n"
]
},
{
"cell_type": "code",
"execution_count": 473,
"metadata": {},
"outputs": [],
"source": [
"model.add(Conv2D(filters=int(gene_region_size / 10), kernel_size=(10,1), activation='relu', dilation_rate=2))"
]
},
{
"cell_type": "code",
"execution_count": 474,
"metadata": {},
"outputs": [],
"source": [
"model.add(Flatten())"
]
},
{
"cell_type": "code",
"execution_count": 475,
"metadata": {},
"outputs": [],
"source": [
"model.add(Dense(gene_region_size, activation='relu'))\n"
]
},
{
"cell_type": "code",
"execution_count": 476,
"metadata": {},
"outputs": [],
"source": [
"model.compile(loss='mean_squared_error', optimizer='adam', \n",
" metrics=['mean_squared_error','mae', 'acc'])"
]
},
{
"cell_type": "code",
"execution_count": 477,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"conv2d_189 (Conv2D) (None, 491, 1, 50) 1050 \n",
"_________________________________________________________________\n",
"conv2d_190 (Conv2D) (None, 482, 1, 50) 25050 \n",
"_________________________________________________________________\n",
"max_pooling2d_19 (MaxPooling (None, 48, 1, 50) 0 \n",
"_________________________________________________________________\n",
"conv2d_191 (Conv2D) (None, 39, 1, 50) 25050 \n",
"_________________________________________________________________\n",
"conv2d_192 (Conv2D) (None, 21, 1, 50) 25050 \n",
"_________________________________________________________________\n",
"flatten_17 (Flatten) (None, 1050) 0 \n",
"_________________________________________________________________\n",
"dense_17 (Dense) (None, 500) 525500 \n",
"=================================================================\n",
"Total params: 601,700\n",
"Trainable params: 601,700\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 478,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 5607 samples, validate on 1870 samples\n",
"Epoch 1/50\n"
]
},
{
"ename": "ResourceExhaustedError",
"evalue": "OOM when allocating tensor of shape [] and type float\n\t [[{{node Adam_15/beta_1/Initializer/initial_value}} = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [] values: 0.9>, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"]()]]\n\nCaused by op 'Adam_15/beta_1/Initializer/initial_value', defined at:\n File \"/opt/miniconda3/lib/python3.6/runpy.py\", line 193, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"/opt/miniconda3/lib/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py\", line 16, in <module>\n app.launch_new_instance()\n File \"/opt/miniconda3/lib/python3.6/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n app.start()\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelapp.py\", line 497, in start\n self.io_loop.start()\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/platform/asyncio.py\", line 132, in start\n self.asyncio_loop.run_forever()\n File \"/opt/miniconda3/lib/python3.6/asyncio/base_events.py\", line 422, in run_forever\n self._run_once()\n File \"/opt/miniconda3/lib/python3.6/asyncio/base_events.py\", line 1434, in _run_once\n handle._run()\n File \"/opt/miniconda3/lib/python3.6/asyncio/events.py\", line 145, in _run\n self._callback(*self._args)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/platform/asyncio.py\", line 122, in _handle_events\n handler_func(fileobj, events)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 300, in null_wrapper\n return fn(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 450, in _handle_events\n self._handle_recv()\n File \"/opt/miniconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 480, in _handle_recv\n self._run_callback(callback, msg)\n File \"/opt/miniconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 432, in _run_callback\n callback(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 300, in null_wrapper\n return fn(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 283, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 233, in dispatch_shell\n handler(stream, idents, msg)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 399, in execute_request\n user_expressions, allow_stdin)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/ipkernel.py\", line 208, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/zmqshell.py\", line 537, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2662, in run_cell\n raw_cell, store_history, silent, shell_futures)\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2785, in _run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2907, in run_ast_nodes\n if self.run_code(code, result):\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2961, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-476-238026d033b3>\", line 2, in <module>\n metrics=['mean_squared_error','mae', 'acc'])\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/training/checkpointable/base.py\", line 426, in _method_wrapper\n method(self, *args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py\", line 403, in compile\n self.optimizer = optimizers.get(optimizer)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 827, in get\n return deserialize(config)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 797, in deserialize\n printable_module_name='optimizer')\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/utils/generic_utils.py\", line 175, in deserialize_keras_object\n return cls.from_config(config['config'])\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 149, in from_config\n return cls(**config)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 447, in __init__\n self.beta_1 = K.variable(beta_1, name='beta_1')\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/backend.py\", line 669, in variable\n constraint=constraint)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/ops/variables.py\", line 147, in __call__\n return super(VariableMetaclass, cls).__call__(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py\", line 297, in __init__\n constraint=constraint)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py\", line 437, in _init_from_args\n initial_value, name=\"initial_value\", dtype=dtype)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 1048, in convert_to_tensor\n as_ref=False)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 1144, in internal_convert_to_tensor\n ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py\", line 228, in _constant_tensor_conversion_function\n return constant(v, dtype=dtype, name=name)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py\", line 213, in constant\n name=name).outputs[0]\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py\", line 488, in new_func\n return func(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 3272, in create_op\n op_def=op_def)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 1768, in __init__\n self._traceback = tf_stack.extract_stack()\n\nResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [] and type float\n\t [[{{node Adam_15/beta_1/Initializer/initial_value}} = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [] values: 0.9>, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"]()]]\n",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mResourceExhaustedError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1291\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1292\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1293\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 1276\u001b[0m return self._call_tf_sessionrun(\n\u001b[0;32m-> 1277\u001b[0;31m options, feed_dict, fetch_list, target_list, run_metadata)\n\u001b[0m\u001b[1;32m 1278\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_call_tf_sessionrun\u001b[0;34m(self, options, feed_dict, fetch_list, target_list, run_metadata)\u001b[0m\n\u001b[1;32m 1366\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1367\u001b[0;31m run_metadata)\n\u001b[0m\u001b[1;32m 1368\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mResourceExhaustedError\u001b[0m: OOM when allocating tensor of shape [] and type float\n\t [[{{node Adam_15/beta_1/Initializer/initial_value}} = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [] values: 0.9>, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"]()]]",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mResourceExhaustedError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-478-a55549df578c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m history = model.fit(train_features, train_labels, \n\u001b[0;32m----> 2\u001b[0;31m epochs=50, verbose=1, validation_split=0.25)\n\u001b[0m",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m 1603\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1604\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1605\u001b[0;31m validation_steps=validation_steps)\n\u001b[0m\u001b[1;32m 1606\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1607\u001b[0m def evaluate(self,\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py\u001b[0m in \u001b[0;36mfit_loop\u001b[0;34m(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 214\u001b[0;31m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 215\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 216\u001b[0m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m 2937\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'`inputs` should be a list or tuple.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2938\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2939\u001b[0;31m \u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2940\u001b[0m \u001b[0mfeed_arrays\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2941\u001b[0m \u001b[0marray_vals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/backend.py\u001b[0m in \u001b[0;36mget_session\u001b[0;34m()\u001b[0m\n\u001b[1;32m 463\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0m_MANUAL_VAR_INIT\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 464\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 465\u001b[0;31m \u001b[0m_initialize_variables\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 466\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 467\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/backend.py\u001b[0m in \u001b[0;36m_initialize_variables\u001b[0;34m(session)\u001b[0m\n\u001b[1;32m 724\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_keras_initialized\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 725\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0muninitialized_vars\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 726\u001b[0;31m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvariables_module\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariables_initializer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muninitialized_vars\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 727\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 728\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 885\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 886\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 887\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 888\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 889\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1108\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhandle\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mfeed_dict_tensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1109\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m-> 1110\u001b[0;31m feed_dict_tensor, options, run_metadata)\n\u001b[0m\u001b[1;32m 1111\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1112\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1284\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1285\u001b[0m return self._do_call(_run_fn, feeds, fetches, targets, options,\n\u001b[0;32m-> 1286\u001b[0;31m run_metadata)\n\u001b[0m\u001b[1;32m 1287\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1288\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_prun_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeeds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetches\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1306\u001b[0m self._config.experimental.client_handles_error_formatting):\n\u001b[1;32m 1307\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0merror_interpolation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minterpolate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1308\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnode_def\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1309\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1310\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_extend_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mResourceExhaustedError\u001b[0m: OOM when allocating tensor of shape [] and type float\n\t [[{{node Adam_15/beta_1/Initializer/initial_value}} = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [] values: 0.9>, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"]()]]\n\nCaused by op 'Adam_15/beta_1/Initializer/initial_value', defined at:\n File \"/opt/miniconda3/lib/python3.6/runpy.py\", line 193, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"/opt/miniconda3/lib/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel_launcher.py\", line 16, in <module>\n app.launch_new_instance()\n File \"/opt/miniconda3/lib/python3.6/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n app.start()\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelapp.py\", line 497, in start\n self.io_loop.start()\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/platform/asyncio.py\", line 132, in start\n self.asyncio_loop.run_forever()\n File \"/opt/miniconda3/lib/python3.6/asyncio/base_events.py\", line 422, in run_forever\n self._run_once()\n File \"/opt/miniconda3/lib/python3.6/asyncio/base_events.py\", line 1434, in _run_once\n handle._run()\n File \"/opt/miniconda3/lib/python3.6/asyncio/events.py\", line 145, in _run\n self._callback(*self._args)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/platform/asyncio.py\", line 122, in _handle_events\n handler_func(fileobj, events)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 300, in null_wrapper\n return fn(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 450, in _handle_events\n self._handle_recv()\n File \"/opt/miniconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 480, in _handle_recv\n self._run_callback(callback, msg)\n File \"/opt/miniconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 432, in _run_callback\n callback(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 300, in null_wrapper\n return fn(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 283, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 233, in dispatch_shell\n handler(stream, idents, msg)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 399, in execute_request\n user_expressions, allow_stdin)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/ipkernel.py\", line 208, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"/opt/miniconda3/lib/python3.6/site-packages/ipykernel/zmqshell.py\", line 537, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2662, in run_cell\n raw_cell, store_history, silent, shell_futures)\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2785, in _run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2907, in run_ast_nodes\n if self.run_code(code, result):\n File \"/opt/miniconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2961, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-476-238026d033b3>\", line 2, in <module>\n metrics=['mean_squared_error','mae', 'acc'])\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/training/checkpointable/base.py\", line 426, in _method_wrapper\n method(self, *args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py\", line 403, in compile\n self.optimizer = optimizers.get(optimizer)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 827, in get\n return deserialize(config)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 797, in deserialize\n printable_module_name='optimizer')\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/utils/generic_utils.py\", line 175, in deserialize_keras_object\n return cls.from_config(config['config'])\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 149, in from_config\n return cls(**config)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/optimizers.py\", line 447, in __init__\n self.beta_1 = K.variable(beta_1, name='beta_1')\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/keras/backend.py\", line 669, in variable\n constraint=constraint)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/ops/variables.py\", line 147, in __call__\n return super(VariableMetaclass, cls).__call__(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py\", line 297, in __init__\n constraint=constraint)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py\", line 437, in _init_from_args\n initial_value, name=\"initial_value\", dtype=dtype)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 1048, in convert_to_tensor\n as_ref=False)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 1144, in internal_convert_to_tensor\n ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py\", line 228, in _constant_tensor_conversion_function\n return constant(v, dtype=dtype, name=name)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py\", line 213, in constant\n name=name).outputs[0]\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py\", line 488, in new_func\n return func(*args, **kwargs)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 3272, in create_op\n op_def=op_def)\n File \"/opt/miniconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py\", line 1768, in __init__\n self._traceback = tf_stack.extract_stack()\n\nResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [] and type float\n\t [[{{node Adam_15/beta_1/Initializer/initial_value}} = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [] values: 0.9>, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"]()]]\n"
]
}
],
"source": [
"history = model.fit(train_features, train_labels, \n",
" epochs=50, verbose=1, validation_split=0.25)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.figure()\n",
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'validation'])\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment